PHP-FPM 是用於管理 PHP 進程池的軟件,用於接收和處理 Web 服務器的請求。
PHP-FPM 會建立一個主進程,控制什麼時候以及如何把 HTTP 請求轉發給一個或多個子進程處理。
PHP-FPM 的配置很重要,能夠參考 PHP手冊相應的內容
1php
emergency_restart_threshold
= 60(建議值)
若是子進程在 emergency_restart_interval 設定的時間內收到該參數設定次數的 SIGSEGV 或者 SIGBUS退出信息號,則FPM會從新啓動。emergency_restart_interval
= 1m
用於設定平滑重啓的間隔時,單位:s(秒),m(分),h(小時)或者 d(天)。默認單位:s(秒)。
這個兩個設置的做用是,若是在指定的一段時間內指定的子進程失效了,讓 PHP-FPM 重啓。
這個兩個設置默認是關閉的,建議開啓,服務器
PHP-FPM 中有一個 Pool Definitions 的區域,意爲進程池,一般建議一個 PHP 應用使用一個進程池。
PHP-FPM 配置文件有默認名爲 www 的配置內容。socket
user
= 運行 PHP 的非 root 用戶
子進程運行的用戶。必須設置。group
= 運行 PHP 的非 root 用戶所屬的用戶組
子進程運行的用戶組。若是沒有設置,則默認用戶的組被使用。listen
= 127.0.0.1:9000 或者 /path/to/unix/socket
設置接受 FastCGI 請求的地址。listen.allowed_clients
= 127.0.0.1
設置容許鏈接到 FastCGI 的服務器 IP 地址。默認狀況,這個字段是註釋掉了,建議開啓。pm
= 生產環境 static
設置進程管理器如何管理子進程。可用值:static,ondemand,dynamic。必須設置。php-fpm
pm.max_children
=
設置 PHP-FPM 進程池中最多能有多少個進程。這個沒有絕對正確值,要根據實際狀況設置。
假設每一個 PHP 進程使用 20-30M 內存,爲整個 PHP-FPM 環境配置了 512 M 內存,那麼能夠設置爲 17-25 中間值。pm.start_servers
=
設置啓動時建立的子進程數目。僅在 pm 設置爲 dynamic 時使用。pm.min_spare_servers
=
設置空閒服務進程的最低數目。僅在 pm 設置爲 dynamic 時使用。必須設置。pm.max_spare_servers
=
設置空閒服務進程的最大數目。僅在 pm 設置爲 dynamic 時使用。必須設置。pm.max_requests
= 1000
設置每一個子進程重生以前服務的請求數。對於可能存在內存泄漏的第三方模塊來講是很是有用的。若是設置爲 '0' 則一直接受請求,默認值:0。slowlog
=
慢請求的記錄日誌。
注意 PHP-FPM 進程所屬的用戶和用戶組必須具備相應文件的寫權限。request_slowlog_timeout
= 5
當一個請求該設置的超時時間後,就會將對應的 PHP 調用堆棧信息完整寫入到慢日誌中。post
PHP-FPM 沒有固定的配置,要根據實際狀況設置。spa
參考:
一、php-fpm的max_chindren的一些誤區.net