kafka读写磁盘会频繁的创建并修改文件系统中的文件,主要有下面3类
日志文件 索引文件 元数据文件一个broker需要控制的文件数 近似 等于
(一个topic分区大小 / 分区段文件大小 ) * 3 * 所有topic分区数总和比如一个partition(topic 分区) 大小为200G, 一个partition segment(分区段文件)大小为10G, 并且该broker上面有100个topic分区
则 该broker上面需要维护的文件个数为 (200 / 10) * 3 * 100 = 6000
查看linux系统限制参数
[bigdataservice@hadoop]$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 256897 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 102400 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 4096 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited可以看到这一行参数配置open files (-n) 102400
由此可知系统允许的打开最多文件数为102400
如果要进行重新设置的话只需 执行下面的命令
ulimit -n 102400XFS是高性能文件系统,CentOS7, CentOS8默认文件系统都是XFS格式的
查看页缓存刷盘参数
sysctl -a | grep dirty vm.dirty_background_bytes = 0 vm.dirty_background_ratio = 10 vm.dirty_bytes = 0 vm.dirty_expire_centisecs = 3000 vm.dirty_ratio = 30 vm.dirty_writeback_centisecs = 500kafka时依赖OS页缓存的flush功能实现消息的真正落盘,默认刷盘间隔时5秒,可适当调大