emq系统调优支持更大并发

emq系统调优支持更大并发

Linux 操作系统参数

系统全局允许分配的最大文件句柄数:

shell 复制代码
# 2 millions system-wide
sysctl -w fs.file-max=2097152
sysctl -w fs.nr_open=2097152
echo 2097152 > /proc/sys/fs/nr_open

允许当前会话 / 进程打开文件句柄数:

shell 复制代码
ulimit -n 1048576

/etc/sysctl.conf

持久化 'fs.file-max' 设置到 /etc/sysctl.conf 文件:

shell 复制代码
fs.file-max = 1048576

/etc/systemd/system.conf 设置服务最大文件句柄数:

shell 复制代码
DefaultLimitNOFILE=1048576

/etc/security/limits.conf

/etc/security/limits.conf 持久化设置允许用户 / 进程打开文件句柄数:

shell 复制代码
*      soft   nofile      1048576
*      hard   nofile      1048576

TCP 协议栈网络参数

并发连接 backlog 设置:

shell 复制代码
sysctl -w net.core.somaxconn=32768
sysctl -w net.ipv4.tcp_max_syn_backlog=16384
sysctl -w net.core.netdev_max_backlog=16384

可用知名端口范围:

shell 复制代码
sysctl -w net.ipv4.ip_local_port_range='1000 65535'

TCP Socket 读写 Buffer 设置:

shell 复制代码
sysctl -w net.core.rmem_default=262144
sysctl -w net.core.wmem_default=262144
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w net.core.optmem_max=16777216
    
#sysctl -w net.ipv4.tcp_mem='16777216 16777216 16777216'
sysctl -w net.ipv4.tcp_rmem='1024 4096 16777216'
sysctl -w net.ipv4.tcp_wmem='1024 4096 16777216'

TCP 连接追踪设置:

shell 复制代码
sysctl -w net.nf_conntrack_max=1000000
sysctl -w net.netfilter.nf_conntrack_max=1000000
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_time_wait=30

TIME-WAIT Socket 最大数量、回收与重用设置:

shell 复制代码
sysctl -w net.ipv4.tcp_max_tw_buckets=1048576
    
# 注意:不建议开启該设置,NAT 模式下可能引起连接 RST
# sysctl -w net.ipv4.tcp_tw_recycle=1
# sysctl -w net.ipv4.tcp_tw_reuse=1

FIN-WAIT-2 Socket 超时设置:

shell 复制代码
sysctl -w net.ipv4.tcp_fin_timeout=15

Erlang 虚拟机参数

优化设置 Erlang 虚拟机启动参数,配置文件 emqx/etc/emqx.conf:

shell 复制代码
## Erlang Process Limit
node.process_limit = 2097152

## Sets the maximum number of simultaneously existing ports for this system
node.max_ports = 1048576

EMQ X 消息服务器参数

设置 TCP 监听器的 Acceptor 池大小,最大允许连接数。配置文件 emqx/etc/emqx.conf:

shell 复制代码
## TCP Listener
listener.tcp.external = 0.0.0.0:1883
listener.tcp.external.acceptors = 64
listener.tcp.external.max_connections = 1024000

客户端-----测试客户端设置

测试客户端服务器在一个接口上,最多只能创建 65000 连接:

shell 复制代码
sysctl -w net.ipv4.ip_local_port_range="500 65535"
echo 1000000 > /proc/sys/fs/nr_open
ulimit -n 100000

emqtt_bench

并发连接测试工具: http://github.com/emqx/emqtt_bench

参考链接:

https://docs.emqx.cn/enterprise/v4.3/tutorial/tune.html#emq-x-消息服务器参数

相关推荐
cuijiecheng20185 分钟前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu
独行soc2 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 33(题目+回答)
linux·科技·安全·网络安全·面试·职场和发展·护网
java龙王*2 小时前
开放端口,开通数据库连接权限,无法连接远程数据库 解决方案
linux
bcbobo21cn3 小时前
Linux命令的命令历史
linux·histsize·histfile
jingyu飞鸟4 小时前
linux系统源代码安装apache、编译隐藏版本号
linux·运维·apache
世事如云有卷舒4 小时前
Ubunt20.04搭建GitLab服务器,并借助cpolar实现公网访问
linux·服务器·gitlab
2401_858286115 小时前
OS15.【Linux】gdb调试器的简单使用
linux·运维·服务器·开发语言·gdb
zjw_rp7 小时前
centos停止维护后更换yum源
linux·运维·centos
行止67 小时前
OpenStack云平台管理
linux·openstack
岁岁岁平安8 小时前
CentOS-7-x86_64解决:使用NAT模式无法ping通www.baidu.com或无法ping 8.8.8.8问题。
linux·运维·centos·centos-7