1、動態模式
pm = dynamic; 最大子進程數(根據服務器內存調整)
pm.max_children = 100 //每個PHP-FPM進程大約占用30-50MB內存(ThinkPHP框架本身有一定內存開銷)安全值:8GB內存 / 50MB ≈ 160,保守設置為100
; 啟動時創建的進程數(建議:min_spare + (max_spare - min_spare)/2)
pm.start_servers = 20 //CPU核數×4 = 16,設置為20
; 空閑進程的最小數量(確保快速響應突發請求)
pm.min_spare_servers = 10
; 空閑進程的最大數量(避免資源浪費)
pm.max_spare_servers = 30
; 每個進程處理的最大請求數(預防內存泄漏)
pm.max_requests = 500
; 進程空閑超時回收時間(可選,動態模式默認不啟用)
pm.process_idle_timeout = 10s
; 啟用狀態頁(監控 FPM 狀態)
pm.status_path = /status; 單個請求的超時時間(防止進程被長時間占用)
request_terminate_timeout = 30s
request_slowlog_timeout = 5s
; 慢日志記錄(排查性能問題)
slowlog = /var/log/php-fpm/slow.logphp_admin_value[memory_limit] = 128M
php_admin_value[max_execution_time] = 30
php_admin_value[upload_max_filesize] = 20M
php_admin_value[post_max_size] = 22Mlisten.backlog = 2048
process.priority = -10
2、靜態模式
pm = static; 固定子進程數量(需根據服務器資源設定)
pm.max_children = 30; 其他參數可省略(靜態模式下無需動態調整)
適用場景:
- 高并發且流量穩定。
- 對延遲敏感(省去進程創建的開銷)。
3、ThinkPHP特別優化
3.1?預加載腳本示例?(/path/to/preload.php):
<?php
// 預加載框架核心
opcache_compile_file('/path/to/thinkphp/base.php');
opcache_compile_file('/path/to/thinkphp/helper.php');// 預加載常用類
foreach (glob('/path/to/app/*.php') as $file) {opcache_compile_file($file);
}
3.2?黑名單配置?(opcache.blacklist_filename):
/path/to/runtime/*
/path/to/tests/*