溫馨提示×

php-fpm在Linux下如何優化配置

小樊
66
2025-05-13 17:07:56
欄目: 編程語言

在Linux下優化PHP-FPM(FastCGI Process Manager)的配置可以顯著提高PHP應用程序的性能。以下是一些常見的優化建議:

1. 調整進程管理參數

PHP-FPM提供了多種進程管理方式,包括dynamic、ondemandstatic。默認情況下,PHP-FPM使用dynamic模式。

  • pm = dynamic

    • pm.max_children:最大子進程數。
    • pm.start_servers:啟動時的子進程數。
    • pm.min_spare_servers:最小空閑子進程數。
    • pm.max_spare_servers:最大空閑子進程數。

    例如:

    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 5
    pm.min_spare_servers = 5
    pm.max_spare_servers = 35
    
  • pm = ondemand

    • pm.process_idle_timeout:進程空閑超時時間。

    例如:

    pm = ondemand
    pm.process_idle_timeout = 10s
    
  • pm = static

    • pm.max_children:最大子進程數。
    • pm.start_servers:啟動時的子進程數。
    • pm.min_spare_servers:最小空閑子進程數。
    • pm.max_spare_servers:最大空閑子進程數。

    例如:

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

2. 調整請求處理參數

  • request_terminate_timeout:請求超時時間,防止長時間運行的腳本占用資源。

    例如:

    request_terminate_timeout = 30s
    

3. 調整內存和CPU使用

  • memory_limit:每個PHP進程的內存限制。

    例如:

    memory_limit = 128M
    
  • open_basedir:限制PHP腳本可以訪問的文件目錄。

    例如:

    open_basedir = /var/www/html/:/tmp/
    

4. 啟用慢查詢日志

  • slow_query_log:啟用慢查詢日志。

  • slow_query_log_file:慢查詢日志文件路徑。

  • long_query_time:慢查詢時間閾值。

    例如:

    slow_query_log = 1
    slow_query_log_file = /var/log/php-fpm/slow.log
    long_query_time = 2
    

5. 調整日志級別

  • error_log:錯誤日志文件路徑。

  • log_level:日志級別。

    例如:

    error_log = /var/log/php-fpm/error.log
    log_level = notice
    

6. 調整文件描述符限制

確保PHP-FPM進程有足夠的文件描述符可用。

ulimit -n 65535

7. 調整TCP參數

優化TCP參數以提高網絡性能。

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535

8. 使用OPcache

啟用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

9. 監控和調優

使用監控工具(如top、htop、php-fpm status)來監控PHP-FPM的性能,并根據實際情況進行調優。

10. 定期重啟PHP-FPM

定期重啟PHP-FPM可以釋放內存并解決一些潛在的問題。

systemctl restart php-fpm

通過以上步驟,你可以顯著提高PHP-FPM在Linux下的性能。請根據你的具體應用場景和硬件資源進行調整。

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