MixPHP、Yii和CodeIgniter的并發(fā)壓力測(cè)試小結(jié)
前言
MixPHP 是一個(gè)基于 Swoole 的高性能框架,CodeIgniter 是一個(gè)元老級(jí)的輕量級(jí)框架,Yii 是一個(gè)非常流行的框架,以下是三個(gè)框架的對(duì)比。
由于Yii/CodeIgniter 是基于 Apache/PHP-FPM 的傳統(tǒng)框架,如果使用 MixPHP 的正常 Swoole 部署方式來(lái)對(duì)比,顯得有些不公平,由于 MixPHP 同時(shí)支持在 Apache/PHP-FPM 中運(yùn)行,所以此次測(cè)試的 MixPHP 是部署在 Apache 之中。
環(huán)境
虛擬機(jī): 4 核,1G
使用 ab 工具壓測(cè),命令:ab -n 5000 -c 100 URL
Yii
Yii 關(guān)閉了 debug,并設(shè)置為 pro 環(huán)境。
默認(rèn)控制器代碼如下,輸出一個(gè) Hello World。
<?php public function actionIndex() { return 'Hello World'; }
CodeIgniter
默認(rèn)控制器代碼如下,輸出一個(gè) Hello World。
<?php public function index() { echo 'Hello World'; }
MixPHP
默認(rèn)控制器代碼如下,輸出一個(gè) Hello World。
public function actionIndex() { return 'Hello World'; }
開(kāi)始測(cè)試
1、測(cè)試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 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Completed 5000 requests Finished 5000 requests Server Software: Apache/2.2.32 Server Hostname: www.b.com Server Port: 80 Document Path: / Document Length: 9 bytes Concurrency Level: 100 Time taken for tests: 88.659 seconds Complete requests: 5000 Failed requests: 0 Total transferred: 1080000 bytes HTML transferred: 45000 bytes Requests 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] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 1.0 1 29 Processing: 14 1765 4200.5 688 48084 Waiting: 14 1610 3741.9 682 46690 Total: 14 1766 4200.5 688 48084 WARNING: 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)
2、測(cè)試 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 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Completed 5000 requests Finished 5000 requests Server Software: Apache/2.2.32 Server Hostname: www.c.com Server Port: 80 Document Path: / Document Length: 8 bytes Concurrency Level: 100 Time taken for tests: 34.621 seconds Complete requests: 5000 Failed requests: 0 Total transferred: 1075000 bytes HTML transferred: 40000 bytes Requests 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] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.7 1 22 Processing: 8 689 1014.3 480 13324 Waiting: 8 686 1012.2 478 13324 Total: 9 689 1014.3 480 13325 WARNING: 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)
3、測(cè)試 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 requests Completed 1000 requests Completed 1500 requests Completed 2000 requests Completed 2500 requests Completed 3000 requests Completed 3500 requests Completed 4000 requests Completed 4500 requests Completed 5000 requests Finished 5000 requests Server Software: Apache/2.2.32 Server Hostname: www.a.com Server Port: 80 Document Path: / Document Length: 12 bytes Concurrency Level: 100 Time taken for tests: 11.351 seconds Complete requests: 5000 Failed requests: 0 Total transferred: 1025000 bytes HTML transferred: 60000 bytes Requests 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] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 1 0.9 1 25 Processing: 4 222 822.4 15 10376 Waiting: 4 221 822.4 14 10376 Total: 4 222 822.4 16 10376 Percentage 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)
結(jié)論
虛擬機(jī)文件IO性能太差,Yii 做300并發(fā)直接不響應(yīng),只好降低到100并發(fā)數(shù),同樣架構(gòu)的測(cè)試結(jié)果 MixPHP 領(lǐng)先。
你也來(lái)測(cè)試一下吧,https://github.com/mixstart/mixPHP
| ITEM | DESC |
|---|---|
| Yii | 56.40 QPS |
| CodeIgniter | 144.42 QPS |
| MixPHP | 440.48 QPS |
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
PHP 閉包獲取外部變量和global關(guān)鍵字聲明變量的區(qū)別講解
閉包是一個(gè)常見(jiàn)的概念,我們通??梢詫⑵渑c回調(diào)函數(shù)配合使用,可以使代碼更加簡(jiǎn)潔易讀。這篇文章主要介紹了PHP 閉包獲取外部變量和global關(guān)鍵字聲明變量的區(qū)別,需要的朋友可以參考下2017-12-12
php多種形式發(fā)送郵件(mail qmail郵件系統(tǒng) phpmailer類)
這篇文章主要介紹了php多種形式發(fā)送郵件的方法,包括使用mail()函數(shù)、使用管道的形式、使用phpmailer類等方法,大家參考使用吧2014-01-01

