首页 > 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,导致坏连接堆积
分类: C/C++, Swoole扩展 标签: