单机千万级连接测试
目标:测试创建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文件
客户端的参数调优(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测试客户端测试四百万级连接
通过HTOP工具监测Coolpy7(连接时)硬件资源占用情况 通过NLOAD工具监测Coolpy7(连接时)网络资源占用情况 使用Coolpy_benchmark工具测试连接400万连接
MQTT 是一个设计得非常出色的传输层协议,在移动消息、物联网、车联网、智能硬件甚至能源勘探等领域有着广泛的应用。1个字节报头、2个字节心跳、消息 QoS 支持等设计,非常适合在低带宽、不可靠网络、嵌入式设备上应用。
不同的应用有不同的系统要求,用户使用Coolpy7消息服务器前,可以按自己的应用场景进行测试,而不是简单的连接压力测试: