關於PHP7.0與PHP5.6下Laravel部落格應用效能對比分析詳解

2020-07-16 10:06:14
目前我安裝的 Homestead 虛擬機器版本是 2.1.8:

04f5e4cf07c786c46f917d4f9ae59db.png

該版本 Homestead 上預裝的 PHP 版本是 5.6.15:

812502c82d975ab1678cfd51f11b314.png

我們使用 ab 命令(Apache 提供的效能測試工具)在該版本中測試 Laravel 應用(以目前正在講的使用Laravel開發的部落格應用為例)效能,我們模擬 10000 次請求,100 個並行進行壓力測試:

ab -n 10000 -c 100 http://blog.app/

執行結果如下:

This is ApacheBench, Version 2.3 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking blog.app (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.8.0
Server Hostname: blog.app
Server Port: 80

Document Path: /
Document Length: 324 bytes

Concurrency Level: 100
Time taken for tests: 69.354 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 19851388 bytes
HTML transferred: 10230000 bytes
Requests per second: 144.19 [#/sec] (mean)
Time per request: 693.545 [ms] (mean)
Time per request: 6.935 [ms] (mean, across all concurrent requests)
Transfer rate: 279.52 [Kbytes/sec] received

Connection Times (ms)
                  min  mean[+/-sd]  median  max
Connect:       0       0     0.2                 0      3
Processing: 17    684   319.1           588   2720
Waiting:      17     684   319.1           588   2720
Total:          20     684   319.1           588   2720

Percentage of the requests served within a certain time (ms)
 50%      588
 66%      695
 75%      842
 80%      933
 90%    1155
 95%    1321
 98%    1545
 99%    1813
 100%  2720 (longest request)

這裡我們要關注的是紅色加粗的文字,即每秒處理請求數,這是衡量系統效能的關鍵指標。根據系統及硬體設定的差異,資料會有些出入。

現在我們按照「Laravel Homestead 支援 PHP 7 」這一節所述將 Homestead 中的 PHP 升級到 7.0 版本。

使用 vagrant ssh 登入到新新增的 homestead-7 虛擬機器,檢視 PHP 版本資訊是否正確:

756b5cb7d22352cdbd3701f38333ee4.png

此時在瀏覽器中存取 http://blog.app 會報錯,因為新安裝的 Homestead 資料庫資料為空,需要登入到虛擬機器執行如下命令執行遷移並填充資料:

php artisan migrate 
php artisan db:seed

再次存取就OK了,好了我們繼續使用同樣的 ab 命令進行壓力測試:

ab -n 10000 -c 100 http://blog.app/

執行結果如下:

This is ApacheBench, Version 2.3 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking blog.app (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.8.0
Server Hostname: blog.app
Server Port: 80

Document Path: /
Document Length: 324 bytes

Concurrency Level: 100
Time taken for tests: 45.032 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 20101202 bytes
HTML transferred: 10230000 bytes
Requests per second: 222.06 [#/sec] (mean)
Time per request: 450.319 [ms] (mean)
Time per request: 4.503 [ms] (mean, across all concurrent requests)
Transfer rate: 435.91 [Kbytes/sec] received

Connection Times (ms)
                  min  mean[+/-sd]  median   max
Connect:       0       0     0.2                 0       4
Processing: 11    443   252.8           379   1978
Waiting:      11     443   252.8           379   1978
Total:          15     443   252.8           379   1978

Percentage of the requests served within a certain time (ms)
 50%      379
 66%      517
 75%      590
 80%      631
 90%      795
 95%      938
 98%    1060
 99%    1229
 100%  1978 (longest request)

經過對比,同一個 Laravel 應用在 PHP 7.0 下的效能比 PHP 5.6 提高了54%,這是一個很顯著的效能提升,當然環境不同資料會有所出入,而且還有更大的提升空間。

原文地址:https://xueyuanjun.com/post/2398

以上就是關於PHP7.0與PHP5.6下Laravel部落格應用效能對比分析詳解的詳細內容,更多請關注TW511.COM其它相關文章!