修改 EMQX 最大文件句柄数

文章目录

    是不是叫 EMQX 系统参数调优更合适?因为不但 max open files 需要配置,其他 TCP 参数也需要配置。

    主要参考官方的配置:

    https://www.emqx.io/docs/zh/v5.0/deploy/tune.html

    清单

    • done:ulimit -n 1048576
    • done: /etc/security/limits.conf
    • done: /etc/sysctl.conf
    • done: /etc/systemd/system.conf
    • done: 重启 emqx 服务:ulimit -n 1048576; ./emqx stop; ./emqx start
    • done: 确认 EMQX Web 后台显示

    如何判断配置是否生效

    配置之后,可以到:

    EMQX web 管理后台 - 仪表盘 - 可以看到“最大文件句柄: 1024”,是否变更。

    服务器当前配置是多少

    要优化配置之前,首先要了解当前的系统配置是什么。

    $ ulimit -n
    1024
    
    $ 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) 63377
    max locked memory       (kbytes, -l) 65536
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    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) 63377
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    
    $ cat /proc/sys/fs/file-max
    1618526
    

    系统级

    $ cat /proc/sys/fs/file-max
    1618526
    

    对于目前的业务场景,感觉默认值足够,不需要调整。

    如果未来要调整,参考

    https://www.ibm.com/support/pages/increasing-maximum-number-open-files-linux-host

    处理修改当前值,还需要配置重启后持久生效。

    TCP 并发数

    https://github.com/emqx/emqx/issues/5858

    从这个 github issue 看,超过 1000 个并发之后,会出问题。

    /etc/systemd/system.conf

    查看默认值

    $ systemctl --user show syncthing | grep LimitNOFILE
    LimitNOFILE=4096
    LimitNOFILESoft=1024
    

    设置

    DefaultLimitNOFILE=1048576
    

    参考

    • EMQX 官方配置文档,太笼统,不适合我这种非专业运维人员 https://www.emqx.io/docs/zh/v5.0/deploy/tune.html
    • 修改配置后,需要重启 EMQX https://blog.csdn.net/ITzhangdaopin/article/details/104739010
    • https://www.jianshu.com/p/f11acf772ab6
    • https://www.mongodb.com/docs/manual/reference/ulimit/
    • 除了 ulimit 还有 tcp 网络参数需要调优:https://github.com/emqx/emqx/issues/5858
    • https://serverfault.com/questions/1068992/centos-ulimit-hard-soft-limits-keep-reset-to-default-values

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式