是不是叫 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 聊聊, 查看更多联系方式