自研MQTT单机百万TCP连接(服务端+客户端)调优

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值