阿里云Centos服务器调优必看,如何让Mqtt服务器支持超过65535个TCP连接?

本文主要用于,MQTT服务系统参数调优

如何让Mqtt服务器支持超过65535个连接?

操作系统参数优化

编辑修改 /etc/sysctl.conf,增加以下内容:

# 这里开始优化mqtt服务器性能
# 内存分配策略
vm.overcommit_memory = 1
# 以下2个配置,设置系统全局最大文件句柄
fs.file-max = 1048576
# 注意,若nofile参数值大于nr_open参数值,会导致用户无法正常登录该实例
# 如果只是临时增加文件描述符的数量,只要执行echo 1048576 > /proc/sys/fs/nr_open
fs.nr_open = 1048576

# Tcp网络优化,并发连接优化
net.core.somaxconn = 32768
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 16384

net.ipv4.tcp_max_syn_backlog = 16384
# 端口使用范围
net.ipv4.ip_local_port_range = 1024 65535

net.ipv4.tcp_wmem = 4096 87380 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_mem = 786432 2097152 3145728

执行sysctl -p刷新

设置sysctl vm.overcommit_memory=1是一种常见的方法。这个参数的含义是,当内存不足时,内核将允许进程继续申请内存,直到申请的总内存超过系统物理内存和swap空间的总和,这样就可以避免在申请内存时出现错误。

[warning] hard nofile参数值不可大于/proc/sys/fs/nr_open参数值,若nofile参数值大于nr_open参数值,则可能导致用户无法正常登录该实例。

设置服务的最大文件句柄

编辑修改 /etc/systemd/system.conf:

DefaultLimitNOFILE=1048576

设置用户的最大文件句柄、最大文件句柄数

编辑修改 /etc/security/limits.conf:

  • 原来:
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
  • 修改后:
# 所有用户设置软限制/硬限制为最多可以打开1048576个文件
# 注意,若nofile参数值大于nr_open参数值,会导致用户无法正常登录该实例
* soft nofile 1048576
* hard nofile 1048576
# 所有用户设置进程数的软限制/硬限制为1048576
* soft nproc 1048576
* hard nproc 1048576
对比(不执行)
  • 临时会话最大文件句柄(可不执行)

ulimit -n 1048576

  • 此为永久性会话最大文件句柄配置

* soft nofile 1048576
* hard nofile 1048576

重启服务器

reboot

重启后查看之前配置是否生效

sysctl -a

这边可以看到fs.file-max = 1048576,说明已经生效

设置如果出问题,可以工单联系阿里工程师

设置如果出问题导致无法重启,可以工单联系阿里工程师
也可以通过将磁盘挂载成数据盘解决
https://help.aliyun.com/zh/ecs/how-do-i-restore-system-disk-data

写在最后,但很重要

并不是说执行以上配置,您就一定可以让你的服务器支撑超过65536个tcp连接,跟服务器配置也有关系,这边实际碰到阿里云t5c1m2型号cpu,2核8GB内存,6万多就会发生问题,后面升级c7型号cpu 4核8GB,目前测试可以支撑16万纯连接(意思是只连接与心跳[120s]),如果加上客户端tps=400/s消息的话,建议15万以下,比较保守的建议是12万。另外,2核4GB的,测试可以支撑12万纯连接跑30分钟才会出问题,加消息够呛,不考虑。

PS:在sysctl.conf文件中定义的内核参数值,如果在文件中多次出现,以最后一次定义的值为准。

写在最后: 微信搜索【蜜蜂网盘搜so】小程序,万部短剧、各种资源任意搜索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leafseelight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值