PHP 7 已是效能基石,但預設配置未必榨乾硬體。本文匯總 5 項生產環境驗證的進階優化技巧,助你再榨 10%-50% 效能。
; php.ini zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=256 ; MB,視專案大小調整 opcache.max_accelerated_files=20000 ; 超過專案 PHP 檔案數 opcache.validate_timestamps=0 ; 生產環境關閉檢查,部署後需重啟 PHP-FPM opcache.revalidate_freq=0 opcache.save_comments=1 ; 保留註解 (Doctrine/註解路由需求) opcache.fast_shutdown=1 ; PHP 7.1+ 已內建,可省略
**效果**:PHP 7 無 Opcache 已比 PHP 5.6 + Opcache 快;開啟後再提升 2-5 倍 (WordPress QPS)。
GCC 4.8+ 支援 **Global Register for opline and execute_data**,將熱點變數放入 CPU 暫存器,減少記憶體存取。
gcc --version # 確認 >= 4.8 # 重新編譯 PHP make clean && ./configure ... && make -j$(nproc) && make install
**效果**:WordPress QPS 提升 **~5%**。GCC 4.8 以下有 Bug 必須避開。
減少 TLB (Translation Lookaside Buffer) 未命中,提升記憶體存取效率。
# 1. 系統層面預留 512 個 2MB HugePages (共 1GB) echo 512 > /proc/sys/vm/nr_hugepages # 永久生效寫入 /etc/sysctl.conf: vm.nr_hugepages=512 # 2. PHP Opcache 啟用 opcache.huge_code_pages=1
驗證:cat /proc/meminfo | grep Huge 觀察 `HugePages_Free` 減少。
**效果**:CPU 密集型負載再提升 **3-8%**,記憶體密集型較不明顯。
將 Opcode 快取寫入檔案,跨進程生命週期重用,解決 PHP-FPM 重啟/部署後冷啟動慢。
opcache.file_cache=/tmp/opcache ; 目錄需 www-data 可寫 opcache.file_cache_only=0 ; 0=記憶體+檔案雙層,1=僅檔案(嵌入式/極小記憶體) opcache.file_cache_consistency_checks=1 ; 安全檢查
**效果**:冷啟動首請求延遲大幅降低,長期運行效能與純記憶體模式持平。
讓編譯器根據實際負載分佈優化機器碼 (分支預測、內聯、熱點函式佈局)。
# 1. 編譯插桩版本 make prof-gen # 2. 訓練:用真實流量或腳本跑 100 次 WordPress 首頁 sapi/cgi/php-cgi -T 100 /var/www/wordpress/index.php > /dev/null # 3. 產生優化版本並安裝 make prof-clean make prof-use && make install
**效果**:針對特定應用 (WordPress/Drupal/Laravel 專案) 再提升 **5-15%**,但**僅適合單一專案專用伺服器**,通用主機不建議。
這 5 招皆為「無業務代碼變更」的基建層優化,投入產出比極高,建議按序逐項落地並壓測驗證。