TCP/UDP压测工具

swoole提供了一套TCP/UDP压测工具,benchmark/run.php中,基于swoole_client实现。与ab,http_bench等工具不同,run.php是基于多进程实现并发测试的。 使用方法:

php run.php -c 100 -n 10000 -s tcp://127.0.0.1:9501 -f long_tcp
  • -c 参数,并发的数量,会启动对应数量的进程用于测试
  • -n 参数,请求的总数量,-n 10000, -c 100,平均到每个子进程的数量为100
  • -s 参数,Server的IP:PORT
  • -f 参数,测试单元的名称,目前提供了long_tcp/short_tcp/udp3种,可以自行实现单元测试函数

测试完成后,打印的结果为:

concurrency:    100 //并发数量
request num:    10000 //请求总数
lost num:   0 //失败次数
success num:    10000 //成功次数
total time: 0.157 //总耗时
req per second: 63558 //qps,每秒处理的请求数
one req use(ms):    0.015  //单个请求的平均时长,此结果目前不准确,请勿作为参考

  • Immvv

    请求总量给到 5W 的话,压测到一半就会 产生 99 错误号的报错,是什么情况呢~~

  • Rango-韩天峰

    因为本地端口不够用,无法得到socket

  • a6965921

    里面只有run.php呀
    运行了还报错。。 [root@iZ23mxcbajfZ bench]# php run.php -c 10 -n 100 -s tcp://127.0.0.1:9501 -f long_tcp PHP Fatal error: Call to undefined function pcntl_fork() in /alidata/www/swooleceshi/swoole-src-swoole-1.7.15-stable/examples/bench/run.php on line 312

  • a6965921

    unavailable [11] in /alidata/www/swooleceshi/swoole-src-swoole-1.7.15-stable/examples/bench/run.php on line 120 30173#8@ is lost

  • 我行我速的风

    bench.php 改为run.php

  • Warning: swoole_client::recv(): recv() failed. Error: Resour

    Warning: swoole_client::recv(): recv() failed. Error: Resource temporarily unavailable [11] in /usr/local/jana/software/swoole-src-swoole-1.7.17-stable/examples/bench/run.php on line 119 is lost 2679#6@ is lost

  • 照相zx

    编译php 的时候带上 --enable-pcntl

  • Smilence.

    PHP Fatal error: Call to undefined function posix_getpid() in /home/swoole-1.7.20/examples/bench/run.php on line 333 是什么原因呢?

  • exec

    swoole_client::send(): send(3) 4036 bytes failed. Error: Broken pipe[32] 这是怎么回事啊?

  • savin

    concurrency: 100 request num: 2000000 lost num: 0 success num: 2000000 total time: 11.70 req per second: 170879 one req use(ms): 0.005

    CPU消耗220%左右,内存占用较少,工作进程3个,php5.6和5.3差别不大

  • Jetbrains

    php run.php -c 2000 -n 1000 -s tcp://127.0.0.1:9567 -f short_tc pcntl_fork(): Error 11 in /home/vagrant/swoole/examples/bench/run.php on line 494

  • Rango-韩天峰

    fork返回错误表明系统已经无法创建新的子进程了,建议降低并发数量。

  • 响当当

    PHP Warning: require(/home/chunmeng_jiang/Projects/swoole-src-1.9.23/benchmark/../websocket/WebSocketClient.php): failed to open stream: No such file or directory in /home/chunmeng_jiang/Projects/swoole-src-1.9.23/benchmark/run.php on line 2

    现在这个工具不能使用了吗,这个文件我在 源码里面始终找不到 WebSocketClient.php