博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EMQ 压测问题
阅读量:5942 次
发布时间:2019-06-19

本文共 2381 字,大约阅读时间需要 7 分钟。

一、单台服务器最高只能跑2W多一点

问题描述
一直使用benchmark测试单台EMQ都没有超过3W链接数
一个独立的外网IP只能提供最多6W的端口号,但每个TCP需要分配一个指定的端口号。所以理论上讲一台EMQ的服务器最多能跑6W链接数。
关于一直报”shutdown,eaddrnotavail”是因为测试的客户机端口号分配不足,并不是服务端无法分配端口号。

单台EMQ测试

1)、使用客户机数据5台
2)、最大链接数在76565
3)、异常情况是应用程序挂掉
erlang.log.4日志

===== ALIVE Sun Aug 26 14:56:54 CST 2018 [os_mon] cpu supervisor port (cpu_sup): Erlang has closed [os_mon] memory supervisor port (memsup): Erlang has closed

 

查看端口号使用命令

#查看端口号使用命令 

netstat -npta | grep 
<端口号>

#查看端口号使用数量 

netstat -npta |grep 
<端口号>
| wc -l

  

 

Linux 系统参数优化

修改系统所有进程可打开的文件数量

sysctl -w fs.file-max=2097152sysctl -w fs.nr_open=2097152

 vi /etc/sysctl.conf

fs.file-max = 2097152fs.nr_open = 2097152

 

设置服务最大文件句柄数

vim /etc/systemd/system.conf

DefaultLimitNOFILE=1048576

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

ulimit -n 1048576  

> vim /etc/security/limits.conf

* soft nofile 1048576* hard nofile 1048576

可用’*’号表示修改所有用户的限制;soft或hard指定要修改软限制还是硬限制;1048576则指定了想要修改的新的限制值,即最大打开文件数(请注意软限制值要小于或等于硬限制)。

TCP 协议栈网络参数

> vi /etc/sysctl.conf### backlog - Socket 监听队列长度:net.core.somaxconn=32768net.ipv4.tcp_max_syn_backlog=16384net.core.netdev_max_backlog=16384## 可用知名端口范围:net.ipv4.ip_local_port_range='1000 65535'## TCP Socket 读写 Buffer 设置:net.core.rmem_default=262144net.core.wmem_default=262144net.core.rmem_max=16777216net.core.wmem_max=16777216net.core.optmem_max=16777216#sysctl -w net.ipv4.tcp_mem='16777216 16777216 16777216'net.ipv4.tcp_rmem='1024 4096 16777216'net.ipv4.tcp_wmem='1024 4096 16777216'## TCP 连接追踪设置:net.nf_conntrack_max=1000000net.netfilter.nf_conntrack_max=1000000net.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# 注意: 不建议开启該设置,NAT模式下可能引起连接RST# net.ipv4.tcp_tw_recycle = 1# net.ipv4.tcp_tw_reuse = 1

 Erlang 虚拟机参数

> vim /usr/local/emqttd/etc/emq.conf## Erlang Process Limitnode.process_limit = 2097152## Sets the maximum number of simultaneously existing ports for this systemnode.max_ports = 1048576## EMQ 最大允许连接数## Size of acceptor poollistener.tcp.external.acceptors = 64## Maximum number of concurrent clients(以1G内存比5W进行配置)listener.tcp.external.max_clients = 1000000

重启emq之后可以在Dashboard看到如下显示:

 

调整系统参数并且开始压测

cd emqtt_benchmarksysctl -w net.ipv4.ip_local_port_range="500 65535"echo 1000000 > /proc/sys/fs/nr_openulimit -n 1000000./emqtt_bench_sub -h 192.168.2.111 -c 32219 -i 1 -t bench /%i -q 2

  

 

 

转载地址:http://aamtx.baihongyu.com/

你可能感兴趣的文章
小tips:你不知道的 npm init
查看>>
Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决...
查看>>
Jmeter也能IP欺骗!
查看>>
Rust 阴阳谜题,及纯基于代码的分析与化简
查看>>
ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
查看>>
(原創) array可以使用reference方式傳進function嗎? (C/C++)
查看>>
STM32F103--(二) GPIO实践
查看>>
关于开源无线路由器的资料
查看>>
Oracle 分页
查看>>
170多个Ionic Framework学习资源(转载)
查看>>
Azure:不能把同一个certificate同时用于Azure Management和RDP
查看>>
Silverlight 控件的验证
查看>>
Directx11教程(15) D3D11管线(4)
查看>>
Microsoft Excel软件打开文件出现文件的格式与文件扩展名指定格式不一致?
查看>>
ios ble 参考
查看>>
[转]Pass a ViewBag instance to a HiddenFor field in Razor
查看>>
linux中注册系统服务—service命令的原理通俗
查看>>
基于托管C++的增删改查及异步回调小程序
查看>>
Oracle DBMS_STATS 包 和 Analyze 命令的区别
查看>>
给Visual Studio 2010中文版添加Windows Phone 7模板
查看>>