Laravel 高併發調優筆記

dynamohuang發表於2018-03-21

調整框架本身的配置

  • 編輯.env
    APP_ENV = production
    APP_DEBUG = false
  • php artisan route:cache / php artisan config:cache
  • composer dump-autoload --optimize
  • php artisan optimize

其他可能

  • 開啟OPcache
  • php-fpm 配置調優

參考文章

But.....壓測很容易看出,這些很難看到提高十倍以上效能的效果

  • 如果你正在考慮框架效能最佳化的問題, 你對PHP應該已經有足夠的瞭解了。 如你所知, PHP每次的每次請求結束, 都會釋放掉執行中建立的所有資源。這樣有一個很大的好處:PHP程式設計師基本不用費力去考慮資源釋放的問題,諸如記憶體,IO控制程式碼,資料庫連線等,請求結束時PHP將全部釋放。PHP程式設計師幾乎不用關心記憶體釋放的問題,也很難寫出記憶體洩露的程式。這讓PHP變得更加簡單容易上手, 直抒心意。但是也帶來了一個壞處:PHP很難在請求間複用資源, 類似PHP框架這種耗時的工作, 每次請求都需要反覆做——即使每次都在做同樣的事情。也正因為如此,在PHP發展過程中,關於是否使用框架的爭論也從未停止過。

  • Laravel本身啟動需要的檔案就很多,外加其出了名的生態環境好,開發中我們會 很多很多現有的輪子,使得一次啟動的磁碟IO特別高(就是要載入很多檔案嘛),雖然官方的php artisan optimize方法最佳化了檔案的載入,但並沒有實際解決IO上的問題。
    知道了問題那就很容易解決了,只要不要每次啟動都重新載入就好了,下面輪到Swoole上場啦。

  • swoole框架相比apache/fpm,主要是節省PHP框架和全域性物件每次請求建立銷燬帶來的效能損耗。如果你的PHP程式碼是裸echo的方式,swoole框架並沒有效能優勢。

  • 同樣,事情總是有好有壞。壞處是:PHP程式設計變得更難了, 你需要考慮記憶體的釋放,需要關心PHP如何使用記憶體。甚至, 你需要了解使用的框架,以免『不小心』寫出讓人『驚喜』的效果。同時, PHP的除錯變得更難, 因為每次修改程式後需要重啟程式才能看到效果。好處是:程式的效能得到極大的提高。 當然, 客觀上的一些利好因素是: PHP的記憶體回收已經相當穩定和高效, Swoole穩定性已經在相當多的專案中得到驗證,Laravel程式碼質量相當高

畫個餅

方案效能對比 使用的輪子:stone

應用型別 原始Laravel Stone-Web Stone-Server 原生php直接echo
laravel5 預設頁面 150 3000 -- --
laravel5 簡單介面 150 3000 8500 9500
laravel4 實際專案簡單頁面 70 1000 -- --
laravel4 簡單介面 120 -- 8200 9500
laravel4 實際專案首頁 35 380 -- --
  • 以上單位全部為RPS
  • Stone相對於原始的Laravel有相當可觀的提升
  • 即使和一個簡單的echo相比, Stone效能損失僅10%左右

swoole+laravel 說幹就幹!

PS:如果親還是用的php5 我就不帶你玩了哈

選個新點火點的輪子:laravel-s

找個本地已有專案ab試水,附上現有結果

Requests per second: 31.91 [#/sec]

先看laravel-s文件一陣配置....

Requests per second: 592.17 [#/sec] (mean)

都是壓測的ab -n 200 -c 20 三次取的平均值 效能提升了20倍!!!

不必多說 花10分鐘你也來試試 就知道其中的爽了

bingo,終於可以在golang的同事面前繼續說php是世界上最美的語言了.......

最後再吹水一波swoole

使用apache bench工具對Nginx靜態頁、Golang Http程式、PHP7+Swoole Http程式進行壓力測試。在同一臺機器上,進行併發100共100萬次Http請求的基準測試中,QPS對比如下:

軟體 QPS 軟體版本
Nginx 164489.92 nginx/1.4.6 (Ubuntu)
Golang 166838.68 go version go1.5.2 linux/amd64
PHP7+Swoole 287104.12 swoole-1.7.22-alpha
Nginx-1.9.9 245058.70 nginx/1.9.9

From swoole 官網 去看看

本文轉自 dynamohuang.github.io,轉發請標註來源

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章