關於PHP7.0與PHP5.6下Laravel博客應用性能對比分析詳解

目前我安裝的 Homestead 虛擬機版本是 2.1.8:

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

我們使用 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 版本信息是否正確:

此時在瀏覽器中訪問 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%,這是一個很顯著的性能提升,當然環境不同數據會有所出入,而且還有更大的提升空間。

 

更多學習內容請訪問:

騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)​

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提升,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨需要的可以免費分享給大家,需要的可以加入我的官方羣點擊此處

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章