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):内核实际执行的限制,任何进程都可以将软限制设置 ≤