🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# TCP/UDP压测工具 [TOC] `Swoole`提供了一套`TCP/UDP`压测工具,`benchmark/run.php`中,基于`swoole_client`+`pcntl`实现。与`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`/`udp`/`websocket`函数,可以自行实现单元测试函数 测试完成后,打印的结果为: ~~~ 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 //单个请求的平均时长,此结果目前不准确,请勿作为参考 ~~~ ## 异步客户端 在`benchmark`目录下还提供了一个`async.php`异步压测工具,使用方法与同步压测脚本`run.php`相同。但底层使用了异步`IO`,因此可以支持更大规模的并发压测。 ## 注意事项 * 压测请勿使用`--enable-debug`和`--enable-swoole-debug`参数的版本 * 压测的服务器程序中请勿使用`echo`打印内容到屏幕,否则会严重拉低测试分值