配置檔案php-fpm.conf 2

nginx_web發表於2012-06-20

;pm.status_path = /status

配置一個URI,以便檢視FPM狀態頁,如果該值沒有設定,那麼沒有URI會被認作是狀態頁。預設情況下,它會顯示如下資訊:

          accepted conn - 該程式池接受的請求數量;

                   pool - 程式池的名字;

        process manager - 程式管理,就是配置中的pm指令,可以選擇的值有

兩個:static dynamic;

         idle processes - 空閒的程式數量;

       active processes - 當前活躍的程式數量;

        total processes - 總的程式數量,它的值等於空閒程式+活躍程式

   max children reached - 達到最大子程式的次數,達到程式的限制,當pm試圖開啟更多的子程式的時候(僅當pm工作在'dynamic')

idle processes”、“active processes”和“total processes”的值每秒鐘更新一次,而“accepted conn”的值是實時更新。

下面是一個輸出的例子:

;   accepted conn:        12073

;   pool:                 www

;   process manager:      static

;   idle processes:       35

;   active processes:     65

;   total processes:      100

;   max children reached: 1

 

預設情況下,狀態頁(status page)的輸出格式為text/plain,通過傳遞“html”或者是“json”查詢字串來返回相應的輸出。

例如,以下語法:

   http://www.foo.bar/status

   http://www.foo.bar/status?json

   http://www.foo.bar/status?html

 注意: 該指令的值必須由斜線(/)開始,它的值可以是任何值,但是不要使用.php副檔名,因為這可能會和一個真實存在的php檔案相沖突。

該指令沒有設定預設值。

 

;ping.path = /ping

   ping URI去呼叫FPM的監控頁面,如果這個值沒有設定,那麼不會有URI被作為ping頁面。這個功能是被用於從外面測試FPM的活躍和響應情況。利用這個功能能夠做到以下應用:

建立一個可用性圖(例如rrd)

如果沒有響應,那麼從組中移除一個服務(負載均衡)

為運營團隊觸發警告(24/7)

注意:

    該值必要由斜線(/)開始,它的值可以是任何值,但是不要使用.php作為副檔名,因為這可能會和一個真實存在的php檔案相沖突。

 

;ping.response = pong

    該指令用於定製ping請求的響應,響應的格式是text/plain(200響應程式碼)

    預設值為pong

 

;request_terminate_timeout = 0

終止請求超時。在worker程式被殺掉之後,提供單個請求的超時間隔。當指令“max_execution_time(該指令在php.ini檔案中設定,一般設定為30,表示每一個 指令碼的最大執行時間)由於某種原因不停止指令碼執行時,該選項應該被使用。如果設定為“0”,那麼就意味著“off”,即不啟用該指令。

有效的單位:s(econds)(default), m(inutes), h(ours), d(ays)

預設值:0

 

;request_slowlog_timeout = 0

    超時設定。通過設定這個選項,能夠讓你對一個PHP程式跟蹤,對於執行緩慢的指令碼將它們連同呼叫的棧一起轉儲並記錄到日誌檔案中。如果將該值設定為“0s”,那麼意味著設定為“off”。

    有效的單位:s(econds)(預設單位), m(inutes), h(ours), 或者 d(ays)

    預設值:0

 

;slowlog = log/$pool.log.slow

    該檔案用於記錄慢請求。預設值沒有設定。

    注意:如果設定了request_slowlog_timeout指令,那麼該指令會被強制使用。

   

;rlimit_files = 1024

    設定開啟檔案描述符的限制。

    預設值為系統定義的值。

 

;rlimit_core = 0

    該指令設定核心檔案對資源的使用限制。是用於核心轉儲,如果設定為0那麼將是不能夠對核心進行轉儲,否則會出錯,因此不建議這麼做。

    可能的值有“unlimited”,或者大於或等於0的整數。

    預設值:系統定義的值。

 

;chroot =

    設定Chroot路徑。在程式一開始啟動時就將其 chroot 到指定的目錄下。該指令的值必須是一個絕對路徑,如果沒有設定該指令的值,那麼chroot就不被使用。

    注意:你可以使用“$prefix”新增字首,這個“$prefix”的值將會是在相應的程式池中定義的$prefix”,當然也可以是它的子目錄。如果程式池的字首沒有設定,那麼將會使用全域性的字首。

    注意:chroot是一項非常安全的功能,無論在任何時候都可以使用該功能。然而,所有的PHP路徑將會隨著chroot轉移(error_log, sessions.save_path, ...)

    預設值:沒有設定。

 

;chdir = /var/www

在程式啟動時將會改變到該指令指定的位置。

    注意:相對路徑將會被使用。

    預設值:當前路徑或者是chroot後的“/”目錄。

 

;catch_workers_output = yes

    worker的標準輸出(stdout)和錯誤(stdout) 輸出重定向到主要的錯誤日誌記錄中。如果沒有設定,根據FastCGI的指定,那麼標準輸出(stdout)和錯誤(stdout)將會被重定向到裝置/dev/null上。

    注意:在高負荷的環境中,在載入頁面時,這將會引起延時。

    處理時間為幾個ms

    預設值:no

 

;env[HOSTNAME] = $HOSTNAME

;env[PATH] = /usr/local/bin:/usr/bin:/bin

;env[TMP] = /tmp

;env[TMPDIR] = /tmp

;env[TEMP] = /tmp

    傳遞環境變數類似於LD_LIBRARY_PATH。所有$VARIABLE都來至於當前的環境。

    預設值:清除系統指令env的值

 

;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com

;php_flag[display_errors] = off

;php_admin_value[error_log] = /var/log/fpm-php.www.log

;php_admin_flag[log_errors] = on

;php_admin_value[memory_limit] = 32M

 

;php_value/php_flag              

可以設定典型的 ini 定義,它可以覆蓋掉由PHP呼叫的“ini_set”。

 

;php_admin_value/php_admin_flag

 

這些指令的值將不會被PHP呼叫的“ini_set”覆蓋。

    額外的php.ini定義,對具體程式池的worker定義。這些設定會覆蓋掉以前在配置檔案中設定的值。這些指令和PHP SAPIServerApplicationProgrammingInterface,服務端應用程式設計埠)一樣。

    對於php_*flag,有效的值為:on, off, 1, 0, true, false, yes no

 

定義“extension”將會從extension_dir載入相應的共享擴充套件。定義“disable_functions”或“disable_classes”將不會覆蓋先前在php.ini中定義的值,             

而是會新增新的值。

 

注意:INI的路徑選項可以是相對路徑,相對路徑可以是先前定義的字首(例如 程式池中的字首、全域性配置中的字首或者是/usr/local/php5.3.4,即在安裝配置是“--prefix”指定的字首)

    預設值:除了php.ini的值和在啟動時通過-d選項定義的值外,沒有定義預設值。

 

php-fpm的配置檔案中有兩個引數非常重要,那就是”pm.max_children””request_terminate_timeout”,第一個引數確定了php-fpm的處理能力,原則上是越多越好,但是這是在記憶體足夠大的前提條件下,每開啟一個php-fpm程式要佔用30M左右的記憶體,因此如果開啟120程式,那就會使用120*40M=4800M記憶體,如果想看看還能開啟多少個程式,你可以通過free命令來檢視一下現在的記憶體使用情況:

 

[root@s8 ~]# free

             total       used       free     shared    buffers     cached

Mem:       8310624    8299040      11584          0     197076    3848784

-/+ buffers/cache:    4253180    4057444

Swap:      4194288        144    4194144

   

如果你的記憶體較小,那麼設定的程式數目就要小,例如如果是512M記憶體,除去系統和其它應用程式使用的記憶體,可能也就是開啟3-5個程式,如果請求訪問較多,那麼肯定會出現502504錯誤,對於502錯誤來說,屬於繁忙程式出錯而造成的,而對於504來說就是客戶傳送的請求在限定的時間內沒有得到相應——過多的請求而導致php-fpm無法及時處理就產生了“504 Gateway Time-out”。這裡我們沒有考慮伺服器端網路頻寬的問題,就假設它是具有足夠的頻寬吧。

 

    另一個需要注意的指令就是“request_terminate_timeout”,它決定了php-fpm程式的連線、傳送和讀取的時間,說的極端一點,如果你將這個值設定為“1,在加上你的伺服器較忙且處理的php程式較耗時,那麼在這種情況下肯定會出現“502 Bad Gateway”和“504 Gateway Time-out”,該指令的預設值為“0,就是說沒有啟用,換句話說就是對於php-fpm不加限制,隨意它執行,這種情況並非不可,但前提條件是你的php-fpm足夠健康(就是說你要保證它沒有bug,你能保證嗎?),因此我們還是要加以限制,但是要根據實際情況做限定,這個要根據具體的環境情況作決定。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-733323/,如需轉載,請註明出處,否則將追究法律責任。

相關文章