环境
- 服务器系统:Ubuntu 16.04 LTS
- 压测客户端系统:Ubuntu 16.04 LTS
- 压测工具:apache-jmeter-5.2,jmeter-mqtt插件
通用配置
-
服务器配置优化
-
修改最大文件句柄数
> ulimit -n 1048576 > vim /etc/security/limit.conf * soft nofile 1048576 * hard nofile 1048576 * soft nproc 655350 * hard nproc 655350
-
修改系统所有进程可打开的文件数量
> sysctl -w fs.file-max=2097152 > sysctl -w fs.nr_open=2097152 > vim /etc/sysctl.conf fs.file-max = 2097152 fs.nr_open = 2097152
-
设置服务最大文件句柄数
> vim /etc/systemd/system.conf DefaultLimitNOFILE=1048576
-
TCP 协议栈网络参数配置
> vim /etc/sysctl.conf ### backlog - Socket 监听队列长度: net.core.somaxconn=32768 net.ipv4.tcp_max_syn_backlog=16384 net.core.netdev_max_backlog=16384 ## 可用知名端口范围: net.ipv4.ip_local_port_range='1000 65535' ## TCP Socket 读写 Buffer 设置: net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.core.optmem_max=16777216 # 确定 TCP 栈应该如何反映内存使用 net.ipv4.tcp_mem='16777216 16777216 16777216' # 表示的是为自动调优所使用的接收缓冲区的值 net.ipv4.tcp_rmem='1024 4096 16777216' # 为自动调优定义每个 socket 使用的内存 net.ipv4.tcp_wmem='1024 4096 16777216' ## TCP 连接追踪设置: net.nf_conntrack_max=1000000 net.netfilter.nf_conntrack_max=1000000 net.netfilter.nf_conntrack_tcp_timeout_time_wait=30 ## FIN-WAIT-2 Socket 超时设置: net.ipv4.tcp_fin_timeout = 15 ## TIME-WAIT Socket 最大数量、回收与重用设置: net.ipv4.tcp_max_tw_buckets=1048576
-
-
进行压测的客户端优化配置
-
tcp端口限制
> echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range
-
一、EMQ(emqx 3.2.5)
-
Erlang 虚拟机参数(EMQ配置文件)