PHP FPM的PM配置引數說明

2021-10-09 19:01:53 字數 1288 閱讀 6182

在配置php-fpm時,下面幾個主要設定引數對系統效能影響比較大,網上很多文章只簡要列出了基礎描述,沒有進一步的說明或舉例,所以許多新手同學在實際配置的時候還是會有困惑,常常是一知半解。當然了,你也可以配置成static後max_children一招打天下,但是在有些場景下理解這些引數的意義還是很有幫助的。

首先,當我們將pm引數設定為dynamic時,以下4個引數都是生效的,他們各自影響系統發揮的不同方面,下面給出我對他們的理解,並且在預設的引數值下舉些例子,希望對大家有所幫助。

pm.max_children = 32

該引數決定了同時存在的最大程序數,包括空閒和非空閒程序,是影響最大負載的決定性引數,決定了伺服器的最大承載能力。當然也不是越大越好,所謂物極必反,要根據cpu核數和記憶體大小來靈活設定。 

一般情況下,每個children大約消耗幾十m的記憶體,我們可以根據記憶體數算出最多可以設定多少個程序,大約不要超過80%總記憶體即可,同時也要考慮伺服器是否有其它服務在執行。

其次,要看看服務的型別,如果服務以計算為主時,則設定不要超過cpu核數,如果是非計算為主時可以多設定一些,但也要考慮記憶體的使用情況。

pm.start_servers = 15

該引數決定了啟動時的程序數,原則上介於min_spare_servers和max_spare_servers之間,這個引數對系統效能影響不大,只影響啟動時的同時承載能力,如果一上來就是大併發,那可以設定大點。

pm.min_spare_servers = 10

該引數是設定最小空閒程序,它影響的是突發響應能力,同時它也是決定了系統的最小程序數。

以上面的設定舉例,如果當前產生了5個併發,那系統就會最少同時存在5+10=15個程序。為什麼說是最少,因為當前空閒程序可能會有10到20個,如果達不到則補足,超過則不用新增。

pm.max_spare_servers = 20

該引數設定最大空閒程序。

以極端情況舉例,系統在經歷最大負載後降低為0負載,那麼這時如果沒有其它特殊情況的話,程序數將會從max_children的32減少到max_spare_servers的20,而不是min_spare_servers的10。

結合上面的說明,也就是說min_spare_servers影響併發增加時的空閒程序數,max_spare_servers影響併發減少時的空閒程序數。

那是不是說如果程序超過max_spare_servers後就不會減少了呢?其實在大多數情況下確實是這樣的,但是當有些情況下,比如達到max_requests後程序被kill掉,或其它情況被終止,這時程序數就會小於max_spare_servers的情形,但是最小值不會小於min_spare_servers。

Nginx配置引數說明

檢測nginx配置檔案是否正確 usr local nginx sbin nginx t c nginx.conf c 配置檔案路徑 g set global directives.version 0.7.4 t 檢測檔案是否正確不執行 v print version.v print nginx v...

Nginx配置引數說明

檢測nginx配置檔案是否正確 usr local nginx sbin nginx t c nginx.conf c 配置檔案路徑 g set global directives.version 0.7.4 t 檢測檔案是否正確不執行 v print version.v print nginx v...

wcf配置引數說明

5.maxbufferpoolsize 524288 從通道接收訊息的最大快取數量為2147483647 6.maxbuffersize 65536 從通道接收訊息的快取大小為2147483647 7.maxconnections 10 最大連線數目 8.maxreceivedmessagesize...