kafka集群性能的OS参数

    科技2025-09-27  64

    1 文件描述符

    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 102400

    2 Socket 缓存大小

    3 文件系统尽量采用xfs格式的,实在不行,也得是ext4

    XFS是高性能文件系统,CentOS7, CentOS8默认文件系统都是XFS格式的

     

    4关闭swap

    sysctl vm.swapiness = <一个较小的数值>

     

    5 设置更长的flush时间

    查看页缓存刷盘参数

    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 = 500

    kafka时依赖OS页缓存的flush功能实现消息的真正落盘,默认刷盘间隔时5秒,可适当调大

    Processed: 0.027, SQL: 9