目前我安裝的 Homestead 虛擬機版本是 2.1.8:
該版本 Homestead 上預(yù)裝的 PHP 版本是 5.6.15:
我們使用 ab 命令(Apache 提供的性能測試工具)在該版本中測試 Laravel 應(yīng)用(以目前正在講的使用Laravel開發(fā)的博客應(yīng)用為例)性能,我們模擬 10000 次請求,100 個并發(fā)進行壓力測試:
ab -n 10000 -c 100 http://blog.app/
運行結(jié)果如下:
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)
這里我們要關(guān)注的是紅色加粗的文字,即每秒處理請求數(shù),這是衡量系統(tǒng)性能的關(guān)鍵指標(biāo)。根據(jù)系統(tǒng)及硬件配置的差異,數(shù)據(jù)會有些出入。
現(xiàn)在我們按照“Laravel Homestead 支持 PHP 7 ”這一節(jié)所述將 Homestead 中的 PHP 升級到 7.0 版本。
使用 vagrant ssh 登錄到新添加的 homestead-7 虛擬機,查看 PHP 版本信息是否正確:
此時在瀏覽器中訪問 http://blog.app 會報錯,因為新安裝的 Homestead 數(shù)據(jù)庫數(shù)據(jù)為空,需要登錄到虛擬機運行如下命令運行遷移并填充數(shù)據(jù):
php artisan migrate php artisan db:seed
再次訪問就OK了,好了我們繼續(xù)使用同樣的 ab 命令進行壓力測試:
ab -n 10000 -c 100 http://blog.app/
運行結(jié)果如下:
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)
經(jīng)過對比,同一個 Laravel 應(yīng)用在 PHP 7.0 下的性能比 PHP 5.6 提高了54%,這是一個很顯著的性能提升,當(dāng)然環(huán)境不同數(shù)據(jù)會有所出入,而且還有更大的提升空間。
原文地址:https://xueyuanjun.com/post/2398