溫馨提示×

LNMP中如何優化PHP-FPM配置

小樊
47
2025-09-24 19:43:55
欄目: 編程語言

在LNMP(Linux, Nginx, MySQL, PHP-FPM)架構中,優化PHP-FPM配置可以顯著提高網站性能。以下是一些常見的優化建議:

1. 調整進程管理

PHP-FPM使用兩種進程管理方式:staticdynamic。默認情況下,大多數系統使用dynamic。

Static模式

pm = static
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

Dynamic模式

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
  • pm.max_children: 最大子進程數,根據服務器內存和PHP腳本的內存使用情況調整。
  • pm.start_servers: 啟動時的子進程數。
  • pm.min_spare_servers: 最小空閑子進程數。
  • pm.max_spare_servers: 最大空閑子進程數。
  • pm.max_requests: 每個子進程在重啟前處理的請求數,防止內存泄漏。

2. 調整請求處理超時

request_terminate_timeout = 30s

這個設置可以防止長時間運行的PHP腳本占用資源。

3. 啟用慢查詢日志

slowlog = /var/log/php-fpm/slow.log
slowlog_timeout = 10s

這有助于識別和優化慢查詢。

4. 調整內存限制

memory_limit = 128M

根據應用需求調整內存限制。

5. 啟用OPcache

確保PHP-FPM配置中啟用了OPcache,這可以顯著提高PHP腳本的執行速度。

[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

6. 調整日志級別

catch_workers_output = yes
php_admin_value[error_log] = /var/log/php-fpm/error.log
php_admin_flag[log_errors] = on

確保錯誤日志記錄詳細信息,便于調試。

7. 使用TCP連接

如果PHP-FPM和Nginx在同一臺服務器上,使用Unix socket而不是TCP連接可以提高性能。

listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data

8. 調整進程優先級

process.priority = -10

根據需要調整進程優先級。

9. 監控和調整

使用監控工具(如Prometheus和Grafana)來監控PHP-FPM的性能,并根據實際情況調整配置。

示例配置文件

以下是一個示例的php-fpm.conf文件:

[global]
daemonize = yes
pid = /run/php/php7.4-fpm.pid
error_log = /var/log/php-fpm/error.log

[www]
listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data
user = www-data
group = www-data
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
request_terminate_timeout = 30s
memory_limit = 128M
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60

根據實際情況調整這些配置,以達到最佳性能。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女