单机千万级连接测试
目标:测试创建1000万客户端连接到服务器端,服务器操作系统 Linux(任意一款发行版服务器版本)。分别在两台硬件一样的服务器,其中一台用于服务器端运行,另一台用于创建千万客户端连接客户端机器。在硬件一致的情况下请确保网络设备达到相关测试要求,例如万兆网络等等。
需要测试千万级连接,确保测试工具独占服务器,并硬件内存大于或等于256GB,由于测试硬件资源受限,以400万连接数据测试结果作为参考依据,单机千万连接完全有可能达到。当商业应用时需要考滤高连接的self-ddos问题,应该尽量设置更长的客户端keepalive值。
服务端系统参数调优(Linux)
修改文件/etc/sysctl.conf,配置网络参数。
net.ipv4.tcp_wmem = 4096 87380 4161536
net.ipv4.tcp_rmem = 4096 87380 4161536
net.ipv4.tcp_mem = 786432 2097152 3145728
fs.file-max = 12000000 #一千两百万执行/sbin/sysctl -p即时生效。
echo 12000000 > /proc/sys/fs/nr_open #需root权限/etc/systemd/system.conf 设置服务最大文件句柄数:
DefaultLimitNOFILE=12000000修改/etc/security/limits.conf文件
启动CP7
客户端的参数调优(Linux)
根据TCP/IP协议,由于端口是16位整数,也就只能是0到 65535,而0到1023是预留端口,所以能分配的端口只是1024到65534,也就是64511个。一台机器一个IP只能创建六万多个长连接。 要想达到更多的客户端连接,可以用更多的机器或者网卡,也可以使用虚拟IP来实现,比如下面的命令增加了19个IP地址,其中一个给服务器用,其它18个给client,这样可以产生18 * 60000 = 1080000个连接。本测试用例需要增加到一千万或以上的足够IP。
以上指令查看到网卡名称为 eth0
以上指令操作增加虚拟IP,添加完成后通过 ifconfig 指令查看确认所有虚拟IP最已列出。
修改/etc/sysctl.conf文件:
执行/sbin/sysctl -p即时生效。
/etc/security/limits.conf配置
使用Coolpy7_benchmark测试客户端测试四百万级连接
客户端连接数
系统使用内存
RES使用内存
VIRT使用内存
CPU使用
网络(进)
网络(出)
100万
4.5G
2633M
2789M
260/1600
2.8M
2M
200万
10.3G
4009M
4152M
277/1600
2.98M
2.15M
300万
14.7G
5517M
5682M
278/1600
3.05M
2.21M
400万
19.3G
7055M
7231M
270/1600
2.91M
2.18M
相关测试截图




工具会以1000为单位打印连接信息
工具启动后会一直创建参数指定的客户端连接数
消息推送压力测试
测试环境:1客户端->Coolpy7->扩展服务
测试结果
按应用场景测试
MQTT 是一个设计得非常出色的传输层协议,在移动消息、物联网、车联网、智能硬件甚至能源勘探等领域有着广泛的应用。1个字节报头、2个字节心跳、消息 QoS 支持等设计,非常适合在低带宽、不可靠网络、嵌入式设备上应用。
不同的应用有不同的系统要求,用户使用Coolpy7消息服务器前,可以按自己的应用场景进行测试,而不是简单的连接压力测试:
Android 消息推送: 推送消息广播测试。
移动即时消息应用: 消息收发确认测试。
智能硬件应用: 消息的往返时延测试。
物联网数据采集: 并发连接与吞吐测试。
Last updated
Was this helpful?