MixPHP/Yii/CodeIgniter 并发压力测试

来源:互联网 发布:java 触发器 开源 编辑:程序博客网 时间:2024/06/05 19:14

MixPHP 是一个基于 Swoole 的高性能框架,CodeIgniter 是一个元老级的轻量级框架,Yii 是一个非常流行的框架,以下是三个框架的对比。

由于 Yii/CodeIgniter 是基于 Apache/PHP-FPM 的传统框架,如果使用 MixPHP 的正常 Swoole 部署方式来对比,显得有些不公平,由于 MixPHP 同时支持在 Apache/PHP-FPM 中运行,所以此次测试的 MixPHP 是部署在 Apache 之中。

环境

虚拟机: 4 核,1G
使用 ab 工具压测,命令:ab -n 5000 -c 100 URL

Yii

Yii 关闭了 debug,并设置为 pro 环境。

默认控制器代码如下,输出一个 Hello World。

<?phppublic function actionIndex(){    return 'Hello World';}

CodeIgniter

默认控制器代码如下,输出一个 Hello World。

<?phppublic function index(){    echo 'Hello World';}

MixPHP

默认控制器代码如下,输出一个 Hello World。

public function actionIndex(){    return 'Hello World';}

开始测试

  1. 测试 Yii,QPS: 56.40
C:\Server\apache24vc11\bin>ab -n 5000 -c 100 http://www.b.com/This is ApacheBench, Version 2.3 <$Revision: 1757674 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking www.b.com (be patient)Completed 500 requestsCompleted 1000 requestsCompleted 1500 requestsCompleted 2000 requestsCompleted 2500 requestsCompleted 3000 requestsCompleted 3500 requestsCompleted 4000 requestsCompleted 4500 requestsCompleted 5000 requestsFinished 5000 requestsServer Software:        Apache/2.2.32Server Hostname:        www.b.comServer Port:            80Document Path:          /Document Length:        9 bytesConcurrency Level:      100Time taken for tests:   88.659 secondsComplete requests:      5000Failed requests:        0Total transferred:      1080000 bytesHTML transferred:       45000 bytesRequests per second:    56.40 [#/sec] (mean)Time per request:       1773.170 [ms] (mean)Time per request:       17.732 [ms] (mean, across all concurrent requests)Transfer rate:          11.90 [Kbytes/sec] receivedConnection Times (ms)              min  mean[+/-sd] median   maxConnect:        0    0   1.0      1      29Processing:    14 1765 4200.5    688   48084Waiting:       14 1610 3741.9    682   46690Total:         14 1766 4200.5    688   48084WARNING: The median and mean for the initial connection time are not within a normal deviation        These results are probably not that reliable.Percentage of the requests served within a certain time (ms)  50%    688  66%   1087  75%   1400  80%   1657  90%   3029  95%   7665  98%  14760  99%  24300 100%  48084 (longest request)
  1. 测试 CodeIgniter ,QPS: 144.42
C:\Server\apache24vc11\bin>ab -n 5000 -c 100 http://www.c.com/This is ApacheBench, Version 2.3 <$Revision: 1757674 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking www.c.com (be patient)Completed 500 requestsCompleted 1000 requestsCompleted 1500 requestsCompleted 2000 requestsCompleted 2500 requestsCompleted 3000 requestsCompleted 3500 requestsCompleted 4000 requestsCompleted 4500 requestsCompleted 5000 requestsFinished 5000 requestsServer Software:        Apache/2.2.32Server Hostname:        www.c.comServer Port:            80Document Path:          /Document Length:        8 bytesConcurrency Level:      100Time taken for tests:   34.621 secondsComplete requests:      5000Failed requests:        0Total transferred:      1075000 bytesHTML transferred:       40000 bytesRequests per second:    144.42 [#/sec] (mean)Time per request:       692.419 [ms] (mean)Time per request:       6.924 [ms] (mean, across all concurrent requests)Transfer rate:          30.32 [Kbytes/sec] receivedConnection Times (ms)              min  mean[+/-sd] median   maxConnect:        0    0   0.7      1      22Processing:     8  689 1014.3    480   13324Waiting:        8  686 1012.2    478   13324Total:          9  689 1014.3    480   13325WARNING: The median and mean for the initial connection time are not within a normal deviation        These results are probably not that reliable.Percentage of the requests served within a certain time (ms)  50%    480  66%    673  75%    810  80%    902  90%   1238  95%   1808  98%   3336  99%   6037 100%  13325 (longest request)
  1. 测试 MixPHP,QPS: 440.48
C:\Server\apache24vc11\bin>ab -n 5000 -c 100 http://www.a.com/This is ApacheBench, Version 2.3 <$Revision: 1757674 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking www.a.com (be patient)Completed 500 requestsCompleted 1000 requestsCompleted 1500 requestsCompleted 2000 requestsCompleted 2500 requestsCompleted 3000 requestsCompleted 3500 requestsCompleted 4000 requestsCompleted 4500 requestsCompleted 5000 requestsFinished 5000 requestsServer Software:        Apache/2.2.32Server Hostname:        www.a.comServer Port:            80Document Path:          /Document Length:        12 bytesConcurrency Level:      100Time taken for tests:   11.351 secondsComplete requests:      5000Failed requests:        0Total transferred:      1025000 bytesHTML transferred:       60000 bytesRequests per second:    440.48 [#/sec] (mean)Time per request:       227.026 [ms] (mean)Time per request:       2.270 [ms] (mean, across all concurrent requests)Transfer rate:          88.18 [Kbytes/sec] receivedConnection Times (ms)              min  mean[+/-sd] median   maxConnect:        0    1   0.9      1      25Processing:     4  222 822.4     15   10376Waiting:        4  221 822.4     14   10376Total:          4  222 822.4     16   10376Percentage of the requests served within a certain time (ms)  50%     16  66%     69  75%    214  80%    364  90%    561  95%    762  98%    978  99%   1829 100%  10376 (longest request)

结论

虚拟机文件IO性能太差,Yii 做300并发直接不响应,只好降低到100并发数,同样架构的测试结果 MixPHP 领先。

你也来测试一下吧,https://github.com/mixstart/mixphp

ITEM DESC Yii 56.40 QPS CodeIgniter 144.42 QPS MixPHP 440.48 QPS
原创粉丝点击