MQTT百万TCP连接(服务端+客户端)调优
Linux系统优化(CentOS7)
打开文件句柄数(nofile)
nofile=number of open file descriptors,在linux下编写网络服务器程序时,每一个TCP连接都要占一个文件句柄。一旦这个文件句柄使用完了,建立新连接时就会发生文件打开过多的错误。linux对nofile的限制分为进程限制和全局限制。
全局限制
# 查看全局nofile
cat /proc/sys/fs/file-nr
# 输出结果:896 0 788492,
# 三个数字分别表示:1.已经分配的文件句柄数,2.已经分配但没有使用的文件句柄数,3.最大nofile限制数量
# 查看单个(fs.nr_open)和所有进程(fs.file-max)nofile限制
sysctl -n fs.nr_open 或者 cat /proc/sys/fs/nr_open
sysctl -n fs.file-max 或者 cat /proc/sys/fs/file-max
# 修改单个和所有进程nofile限制
sysctl -w fs.nr_open=2097152
sysctl -w fs.file-max=2097152
# 持久化修改nr_open和file-max
vi /etc/sysctl.conf
# 增加配置
fs.nr_open = 2097152
fs.file-max = 2097152
# 设置服务的nofile
vi /etc/systemd/system.conf
# 启用并修改配置
DefaultLimitNOFILE=2097152
进程限制
进程的nofile限制分为:
- 软限制(soft limit):内核实际执行的限制,任何进程都可以将软限制设置 ≤ 进程的硬限制的值。

文章详细介绍了如何针对MQTT服务端和客户端进行TCP连接优化,包括Linux(CentOS7)系统的文件句柄数(nofile)限制调整,TCP协议栈参数优化,JVM11的参数设置,以及压力机选择和环境配置。通过这些优化措施,能够在4C8G的虚拟机上实现60万连接,8C16G机器上达到130万连接。
最低0.47元/天 解锁文章
672





