|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創(chuàng)造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創(chuàng)造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家?guī)淼膬热菔顷P于Swoole同步模式與協(xié)程模式之間的對比 (詳細) ,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。在現(xiàn)代化 PHP 高級開發(fā)中,Swoole 為 PHP 帶來了更多可能,如:常駐內存、協(xié)程,關于傳統(tǒng)的 Apache/FPM 模式與常駐內存模式(同步)的巨大差異,之前我做過測試,大家能直觀的感受到性能的巨大提升,但是協(xié)程到來后,又帶來了多少性能的提升呢?提升的又是哪方面的性能?下面逐步測試一下。 傳統(tǒng)的 Apache/FPM 模式與常駐內存模式(同步)的測試文章: 協(xié)程的優(yōu)勢協(xié)程模式與常駐內存模式(同步)/傳統(tǒng)模式相比: 常駐模式/傳統(tǒng)模式都屬于同步阻塞編程,由于同一個進程不能并行處理請求,所以為了提高并發(fā),只能開啟更多的進程,通常超過 協(xié)程模式的執(zhí)行方式: 協(xié)程模式中一個進程可以同時執(zhí)行 N 個請求,但同一時刻只執(zhí)行其中的某一個請求,也就是說,當執(zhí)行到 MySQL/Redis 這些客戶端時,由于需要等待客戶端響應,常駐模式/傳統(tǒng)模式通常是在傻傻的等待響應,而協(xié)程這個時候會掛起當前協(xié)程,切換到其他協(xié)程中去處理其他請求,所以協(xié)程能同時處理 N 個請求,每增加一個請求只需增加一些內存消耗,相比增加一個進程的內存消耗,顯然是少太多的,由于協(xié)程能并行處理,所以通常只需配置于 CPU 數(shù)量 1~2 倍左右的進程數(shù)即可,更少的進程帶來更少的 CPU 線程切換,又減少很多性能損耗。 開始測試MixPHP 是一個基于 Swoole 的FPM、常駐內存、協(xié)程三模 PHP 高性能框架,由于該框架同時具備常駐內存模式、協(xié)程模式,所以能很方便的測試結果。 測試環(huán)境: docker 容器,限制只能使用 1 CPU。 其他參數(shù)如下: Server Name: mix-httpd Framework Version: 1.1.0-RC PHP Version: 7.2.9 Swoole Version: 4.1.0 Listen Addr: 127.0.0.1 Listen Port: 9501 代碼: 模擬常用的 HTTP 開發(fā)需求,執(zhí)行三個 SQL 請求。 // 默認動作
public function actionIndex()
{
PDO::createCommand("select * from `test` where id = 1")->queryOne();
PDO::createCommand("select * from `test` where id = 2")->queryOne();
return PDO::createCommand("select * from `test` limit 5")->queryAll();
}測試結果常駐內存模式(同步):
協(xié)程模式:
協(xié)程在本次測試中并沒有像之前的傳統(tǒng) Apache/FPM 模式與常駐內存模式(同步)的測試一樣展現(xiàn)出巨大的性能提升,說明:
常駐內存模式(同步)詳細測試首先 8 個 Worker 進程,并發(fā) 100 測試,RPS 為 838.65。 C:\Users\EDZ>ab -n 10000 -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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 100
Time taken for tests: 11.924 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 838.65 [#/sec] (mean)
Time per request: 119.239 [ms] (mean)
Time per request: 1.192 [ms] (mean, across all concurrent requests)
Transfer rate: 217.85 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 4
Processing: 20 118 18.3 118 195
Waiting: 19 118 18.4 118 195
Total: 20 118 18.4 119 195
Percentage of the requests served within a certain time (ms)
50% 119
66% 126
75% 130
80% 133
90% 141
95% 147
98% 155
99% 161
100% 195 (longest request)然后使用 8 個 Worker 進程,并發(fā) 300 測試,RPS 為 683.78。 C:\Users\EDZ>ab -n 10000 -c 300 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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 300
Time taken for tests: 14.624 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 683.78 [#/sec] (mean)
Time per request: 438.735 [ms] (mean)
Time per request: 1.462 [ms] (mean, across all concurrent requests)
Transfer rate: 177.62 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 30.0 0 3000
Processing: 62 432 493.4 354 3457
Waiting: 54 431 488.1 354 3455
Total: 62 433 494.1 354 3457
Percentage of the requests served within a certain time (ms)
50% 354
66% 373
75% 385
80% 392
90% 411
95% 432
98% 3170
99% 3266
100% 3457 (longest request)然后使用 8 個 Worker 進程,并發(fā) 500 測試,RPS 為 688.56。 C:\Users\EDZ>ab -n 10000 -c 500 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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 500
Time taken for tests: 14.523 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 688.56 [#/sec] (mean)
Time per request: 726.150 [ms] (mean)
Time per request: 1.452 [ms] (mean, across all concurrent requests)
Transfer rate: 178.87 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 30.0 0 3000
Processing: 102 707 618.4 596 3632
Waiting: 89 703 605.6 595 3629
Total: 102 707 618.9 596 3633
Percentage of the requests served within a certain time (ms)
50% 596
66% 620
75% 635
80% 645
90% 679
95% 3125
98% 3401
99% 3495
100% 3633 (longest request)現(xiàn)在調整為 50 進程,100 并發(fā)測試,RPS 為 770.69。 C:\Users\EDZ>ab -n 10000 -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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 100
Time taken for tests: 12.975 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 770.69 [#/sec] (mean)
Time per request: 129.754 [ms] (mean)
Time per request: 1.298 [ms] (mean, across all concurrent requests)
Transfer rate: 200.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 42.4 0 3000
Processing: 10 128 499.8 56 7137
Waiting: 10 127 495.8 55 7137
Total: 11 129 503.3 56 7137
Percentage of the requests served within a certain time (ms)
50% 56
66% 72
75% 86
80% 97
90% 133
95% 179
98% 312
99% 3052
100% 7137 (longest request)50 進程,300 并發(fā)測試,RPS 為 304.90。 C:\Users\EDZ>ab -n 10000 -c 300 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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 300
Time taken for tests: 32.798 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 304.90 [#/sec] (mean)
Time per request: 983.942 [ms] (mean)
Time per request: 3.280 [ms] (mean, across all concurrent requests)
Transfer rate: 79.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 3 90.0 0 3001
Processing: 25 976 1339.8 189 3694
Waiting: 23 954 1316.5 188 3691
Total: 25 979 1341.0 189 3694
Percentage of the requests served within a certain time (ms)
50% 189
66% 289
75% 3094
80% 3113
90% 3184
95% 3249
98% 3315
99% 3375
100% 3694 (longest request)50 進程,500 并發(fā)測試,RPS 為 378.95。 C:\Users\EDZ>ab -n 10000 -c 500 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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 500
Time taken for tests: 26.389 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 378.95 [#/sec] (mean)
Time per request: 1319.431 [ms] (mean)
Time per request: 2.639 [ms] (mean, across all concurrent requests)
Transfer rate: 98.44 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 79.4 0 3001
Processing: 64 1306 1434.7 341 3962
Waiting: 17 1224 1391.4 321 3959
Total: 65 1308 1435.2 342 3963
Percentage of the requests served within a certain time (ms)
50% 342
66% 3142
75% 3168
80% 3195
90% 3292
95% 3374
98% 3467
99% 3516
100% 3963 (longest request)協(xié)程模式詳細測試首先 8 個 Worker 進程,并發(fā) 100 測試,RPS 為 834.12。 C:\Users\EDZ>ab -n 10000 -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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 100
Time taken for tests: 11.989 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 834.12 [#/sec] (mean)
Time per request: 119.886 [ms] (mean)
Time per request: 1.199 [ms] (mean, across all concurrent requests)
Transfer rate: 216.68 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 4
Processing: 84 119 9.8 122 165
Waiting: 84 119 9.8 122 164
Total: 84 119 9.8 123 165
Percentage of the requests served within a certain time (ms)
50% 123
66% 124
75% 125
80% 125
90% 126
95% 128
98% 131
99% 137
100% 165 (longest request)然后使用 8 個 Worker 進程,并發(fā) 300 測試,RPS 為 837.50。 C:\Users\EDZ>ab -n 10000 -c 300 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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 300
Time taken for tests: 11.940 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 837.50 [#/sec] (mean)
Time per request: 358.207 [ms] (mean)
Time per request: 1.194 [ms] (mean, across all concurrent requests)
Transfer rate: 217.55 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 42.4 0 3001
Processing: 86 354 1043.0 161 7172
Waiting: 86 344 1011.9 160 7172
Total: 86 355 1044.5 161 7172
Percentage of the requests served within a certain time (ms)
50% 161
66% 182
75% 199
80% 212
90% 251
95% 302
98% 6103
99% 6135
100% 7172 (longest request)然后使用 8 個 Worker 進程,并發(fā) 500 測試,RPS 為 824.14。 C:\Users\EDZ>ab -n 10000 -c 500 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 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: nginx/1.13.9
Server Hostname: www.a.com
Server Port: 80
Document Path: /
Document Length: 101 bytes
Concurrency Level: 500
Time taken for tests: 12.134 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2660000 bytes
HTML transferred: 1010000 bytes
Requests per second: 824.14 [#/sec] (mean)
Time per request: 606.690 [ms] (mean)
Time per request: 1.213 [ms] (mean, across all concurrent requests)
Transfer rate: 214.08 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 4
Processing: 92 332 585.3 198 6931
Waiting: 91 331 585.5 196 6931
Total: 92 332 585.3 198 6931
Percentage of the requests served within a certain time (ms)
50% 198
66% 242
75% 284
80% 334
90% 587
95% 932
98% 1216
99% 2390
100% 6931 (longest request)相關推薦: 以上就是Swoole同步模式與協(xié)程模式之間的對比 (詳細)的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!