🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 性能测试 ## 测试环境 CPU: Core i7-8550U CPU 1.80GHz 内存: 16G ## 测试命令 `ab -c 1000 -n 1000000 -k http://127.0.0.1:8081/` ## Warriorman ### 测试脚本 ``` <?php use Workerman\Worker; use Workerman\Lib\Timer; use WOrkerman\Db\MysqlPool; require_once 'Workerman/Autoloader.php'; Warriorman\Worker::rename(); // 将Workerman改为Workerman Warriorman\Runtime::enableCoroutine(); // hook相关函数 // 监听另外一个端口 $worker2 = new Worker("tcp://0.0.0.0:8081"); $worker2->count = 16; $worker2->onMessage = function ($connection, $data) { $responseStr = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Keep-Alive\r\nContent-Length: 11\r\n\r\nhello worlb\r\n"; $connection->send($responseStr); }; Worker::runAll(); ``` ### 开始测试 ``` root@WIN-20200727IKP:/mnt/c/Users/Administrator# ab -c 1000 -n 1000000 -k http://127.0.0.1:8081/ This is ApacheBench, Version 2.3 <$Revision: 1843412 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 100000 requests Completed 200000 requests Completed 300000 requests Completed 400000 requests Completed 500000 requests Completed 600000 requests Completed 700000 requests Completed 800000 requests Completed 900000 requests Completed 1000000 requests Finished 1000000 requests Server Software: Server Hostname: 127.0.0.1 Server Port: 8081 Document Path: / Document Length: 13 bytes Concurrency Level: 1000 Time taken for tests: 13.909 seconds Complete requests: 1000000 Failed requests: 0 Keep-Alive requests: 1000000 Total transferred: 101000000 bytes HTML transferred: 13000000 bytes Requests per second: 71894.35 [#/sec] (mean) Time per request: 13.909 [ms] (mean) Time per request: 0.014 [ms] (mean, across all concurrent requests) Transfer rate: 7091.14 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 4.5 0 264 Processing: 2 14 0.8 14 264 Waiting: 0 14 0.8 14 25 Total: 2 14 4.5 14 278 Percentage of the requests served within a certain time (ms) 50% 14 66% 14 75% 14 80% 14 90% 14 95% 15 98% 16 99% 17 100% 278 (longest request) ``` ## Workerman ### 测试脚本 ``` <?php use Workerman\Worker; require_once __DIR__ . '/Workerman/Autoloader.php'; $worker = new Worker('tcp://0.0.0.0:8081'); $worker->count = 16; $worker->onMessage = function ($connection) { $responseStr = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: Keep-Alive\r\nContent-Length: 11\r\n\r\nhello world\r\n"; $connection->send($responseStr); }; Worker::runAll(); ``` ### 开始测试 ``` root@WIN-20200727IKP:/mnt/c/Users/Administrator# ab -c 1000 -n 1000000 -k http://127.0.0.1:8081/ This is ApacheBench, Version 2.3 <$Revision: 1843412 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking 127.0.0.1 (be patient) Completed 100000 requests Completed 200000 requests Completed 300000 requests Completed 400000 requests Completed 500000 requests Completed 600000 requests Completed 700000 requests Completed 800000 requests Completed 900000 requests Completed 1000000 requests Finished 1000000 requests Server Software: Server Hostname: 127.0.0.1 Server Port: 8081 Document Path: / Document Length: 13 bytes Concurrency Level: 1000 Time taken for tests: 27.099 seconds Complete requests: 1000000 Failed requests: 0 Keep-Alive requests: 1000000 Total transferred: 101000000 bytes HTML transferred: 13000000 bytes Requests per second: 36902.22 [#/sec] (mean) Time per request: 27.099 [ms] (mean) Time per request: 0.027 [ms] (mean, across all concurrent requests) Transfer rate: 3639.77 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.9 0 28 Processing: 3 27 4.3 30 65 Waiting: 3 27 4.3 30 65 Total: 3 27 4.3 30 71 Percentage of the requests served within a certain time (ms) 50% 30 66% 31 75% 31 80% 31 90% 32 95% 32 98% 32 99% 33 100% 71 (longest request) ``` ### 结论 相较于Workerman确实提升较大,但是Warriorman每个进程占用的内存更高。