(圖片來源:Photo by Jason Dent on Unsplash)
這是和好友同事一起開發、調整、維護的 PHP 容器。原始設計目的是想讓 php-fpm 與 nginx 結合,形成一個簡化的環境,能方便地使 Laravel 運作在雲原生環境、AWS Fargate、Amazon ECS 等環境下。我們將之拿來作為基底,用於手邊各種專案的教學與實作、各種比較測試、包含用於 x86/ARM 運算架構比較等等。
隨著 PHP 新版本的更新與發布,我們計畫將做過的效能測試比較,每季(沒忘記的話)釋出一份測試結果與 PHP 同好們一起分享。
- 若您覺得這個容器專案對您有所幫助,期待您能應用於手邊的專案上、分享給朋友、或幫這個專案按一個星星 ⭐ :)
- 釋出的 Docker image 放置於 Docker Hub: dwchiang/nginx-php-fpm
- 原始 Dockerfiles 放置於 GitHub: dwchiang/nginx-php-fpm
- 如果您有是用這個容器在任何專案,歡迎與我們分享您的應用,也讓我們知道應該規劃多少資源在這個容器專案上。
- 若您也對這個主題【在 Amazon ECS 運行 Laravel】感興趣的話,可延伸參考
- 這個自助學習、有完整架構圖的線上工作坊: GitHub: dwchiang/laravel-on-aws-ecs-workshops、
- 或是我的這場演講,有投影片、錄影: 在 AWS 上運行 Laravel/PHP 容器應用程式 (AWS Builders Day Taiwan 2022)
預覽
內容大綱
關於測試 Our PHP Benchmarks
- 機器
- Apple M1, 16 GB
- 變數
- OS
- Debian 11 bullseye, Debian 12 bookworm
- alpine3.17, alpine3.18
- PHP
- 8.4.0beta4, 8.4.0beta3, 8.4.0alpha4, 8.4.0alpha2, 8.4.0alpha1
- 8.3.11, 8.3.10, 8.3.9, 8.3.8, 8.3.7, 8.3.6, 8.3.4, 8.3.3, 8.3.2, 8.3.0
- 8.2.23, 8.2.22, 8.2.21, 8.2.20, 8.2.19, 8.2.18, 8.2.17, 8.2.16, 8.2.15, 8.2.13, 8.2.12, 8.2.11, 8.2.10, 8.2.9
- 8.1.29, 8.1.28, 8.1.27, 8.1.26, 8.1.25, 8.1.24, 8.1.23, 8.1.22
- 8.0.30, 8.0.29, 8.0.28, 8.0.27, 8.0.26
- 7.4.33, 7.4.32, 7.4.30, 7.4.29, 7.4.28
- 7.3.33, 7.3.32, 7.3.31, 7.3.30, 7.3.29
- nginx
- 1.24.0
- 1.25.4
- 1.26.2
- 1.27.1
- OS
- 測試
- 1 Thread
- 1 Conn
- 60s
- 每個變數組合各自測試 10 次 (N = 10)
整理這類比較的數據,從設計環境、實作、量測、資料採集、整理、製圖、總結歸納等步驟做下來,滿燒腦也滿有趣的,若內容中有任何可以調整或改進之處、或建議其他量測方式,歡迎留言或開個 issue 給我們,非常感謝。
測試項目 01 phpinfo
RPS (phpinfo)
- RPS = Requests per second. More is Better.
Latency (phpinfo)
- Latency. Fewer is Better.
歷史資料 History
參考資料 Reference
PHP 8.4
- TBD for Migration
PHP 8.3
PHP 8.2
- PHP: Migrating from PHP 8.1.x to PHP 8.2.x - Manual
- PHP 8.2 Performance Continues Moving In The Right Direction - Phoronix by Michael Larabel on 2022-05-23
PHP 8.1
- PHP: Migrating from PHP 8.0.x to PHP 8.1.x - Manual
- PHP 8.1 Performance Is Continuing To Improve With Early Benchmarks - Phoronix