首页
>
C/C++,
Swoole扩展 > Swoole压测:如何做到并发10万TCP连接
Swoole压测:如何做到并发10万TCP连接
Server代码调整
- 要关闭输出,否则打印屏幕会拖垮Server.
- 修改server的max_conn参数为100000或者更大,为了安全实际上只能到99999。
内核参数调整
- ulimit -n 要调整为100000甚至更大。如何调这个参数,可以参考网上的一些文章。命令行下执行 ulimit -n 100000即可修改。如果不能修改,需要设置 /etc/security/limits.conf,加入
* hard nofile 100000
* soft nofile 100000
- net/ipv4/ip_local_port_range 需要修改为更大的范围,如20000 – 60000,否则端口号会不够用。导致客户端报 99错误
- 单台是不能压到10万的。客户端连接需要分配一个local port。范围是上一条设置的。也就是只有4万个port可以用。可以使用多台机器来测试。
- net.ipv4.tcp_tw_recycle = 1 ,设置快速回收被close的端口。否则端口会不够用
- 其他内核参数的调整,如tcp_fin_timeout、tcp_keepalive_time、tcp_max_syn_backlog可以搜索网上的文章。
- 长期运行的Server要有坏连接检测的能力,比如心跳、活动时间检测等方案。避免客户端没有发REST,导致坏连接堆积