1. 程式人生 > 實用技巧 >啟用php-fpm狀態功能 --php-fpm調優也有

啟用php-fpm狀態功能 --php-fpm調優也有

php-fpm和nginx一樣內建了一個狀態頁,對於想了解php-fpm的狀態以及監控php-fpm非常有幫助。為了後續的zabbix監控,我們需要先了解php-fpm狀態頁是怎麼回事。

1. 啟用php-fpm狀態功能

#cat/usr/local/php-5.5.10/etc/php-fpm.conf|grepstatus_pathpm.status_path=/status

預設情況下為/status,當然也可以改成其他的,例如/ttlsa_status等等。

2. nginx配置

在預設主機裡面加上location或者你希望能訪問到的主機裡面。

server{
listen*:80default_server;
server_name_;
location~^/(status|ping)$
{
includefastcgi_params;
fastcgi_pass127.0.0.1:9000;
fastcgi_paramSCRIPT_FILENAME$fastcgi_script_name;
}
}

3. 重啟nginx/php-fpm
請依照你的環境重啟你的nginx和php-fpm

#servicenginxrestart
#servicephp-fpmrestart

4. 開啟status頁面

#curlhttp://127.0.0.1/statuspool:
wwwprocessmanager:dynamicstarttime:14/May/2014:22:40:15+0800
startsince:58508
acceptedconn:33
listenqueue:0
maxlistenqueue:8
listenqueuelen:0
idleprocesses:2
activeprocesses:1
totalprocesses:3
maxactiveprocesses:5
maxchildrenreached:0
slowrequests:2091

5. php-fpm status詳解

pool – fpm池子名稱,大多數為www
process manager – 程序管理方式,值:static, dynamic or ondemand. dynamic
start time – 啟動日期,如果reload了php-fpm,時間會更新
start since – 執行時長
accepted conn – 當前池子接受的請求數
listen queue – 請求等待佇列,如果這個值不為0,那麼要增加FPM的程序數量
max listen queue – 請求等待佇列最高的數量
listen queue len – socket等待佇列長度
idle processes – 空閒程序數量
active processes – 活躍程序數量
total processes – 總程序數量
max active processes – 最大的活躍程序數量(FPM啟動開始算)
max children reached - 大道程序最大數量限制的次數,如果這個數量不為0,那說明你的最大程序數量太小了,請改大一點。
slow requests – 啟用了php-fpm slow-log,緩慢請求的數量

6. php-fpm其他引數

php-fpm狀態頁比較個性化的一個地方是它可以帶引數,可以帶引數json、xml、html並且前面三個引數可以分別和full做一個組合。

6.1 json

#curlhttp://127.0.0.1/status?json{"pool":"www","processmanager":"dynamic","starttime":1400078415,"startsince":59624,"acceptedconn":27,"listenqueue":0,"maxlistenqueue":8,"listenqueuelen":0,"idleprocesses":2,"activeprocesses":1,"totalprocesses":3,"maxactiveprocesses":5,"maxchildrenreached":0,"slowrequests":2145}

6.2 xml

#curlhttp://127.0.0.1/status?xml
<?xmlversion="1.0"?><status>
<pool>www</pool>
<process-manager>dynamic</process-manager>
<start-time>1400078415</start-time>
<start-since>59640</start-since>
<accepted-conn>36</accepted-conn>
<listen-queue>0</listen-queue>
<max-listen-queue>8</max-listen-queue>
<listen-queue-len>0</listen-queue-len>
<idle-processes>2</idle-processes>
<active-processes>1</active-processes>
<total-processes>3</total-processes>
<max-active-processes>5</max-active-processes>
<max-children-reached>0</max-children-reached>
<slow-requests>2145</slow-requests>

6.3 html

#curlhttp://127.0.0.1/status?html
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml"xml:lang="en">
<head><title>PHP-FPMStatusPage</title></head>
<body>
<table>
<tr><th>pool</th><td>www</td></tr>
<tr><th>processmanager</th><td>dynamic</td></tr>
<tr><th>starttime</th><td>14/May/2014:22:40:15+0800</td></tr>
<tr><th>startsince</th><td>59662</td></tr>
<tr><th>acceptedconn</th><td>8</td></tr>
<tr><th>listenqueue</th><td>0</td></tr>
<tr><th>maxlistenqueue</th><td>8</td></tr>
<tr><th>listenqueuelen</th><td>0</td></tr>
<tr><th>idleprocesses</th><td>2</td></tr>
<tr><th>activeprocesses</th><td>1</td></tr>
<tr><th>totalprocesses</th><td>3</td></tr>
<tr><th>maxactiveprocesses</th><td>5</td></tr>
<tr><th>maxchildrenreached</th><td>0</td></tr>
<tr><th>slowrequests</th><td>2147</td></tr>
</table>
</body></html>

6.4 full

#curlhttp://127.0.0.1/status?full
pool:www
processmanager:dynamic
starttime:14/May/2014:22:40:15+0800
startsince:59695
acceptedconn:1
listenqueue:0
maxlistenqueue:8
listenqueuelen:0
idleprocesses:2
activeprocesses:1
totalprocesses:3
maxactiveprocesses:5
maxchildrenreached:0
slowrequests:2148
************************
pid:29050
state:Idle
starttime:15/May/2014:15:09:32+0800
startsince:338
requests:62
requestduration:1025585
requestmethod:GET
requestURI:/index.php
contentlength:0
user:-
script:/data/site/www.ttlsa.com/index.php
lastrequestcpu:45.83
lastrequestmemory:24903680
.....省略幾個PID....

6.5 full詳解
pid – 程序PID,可以單獨kill這個程序. You can use this PID to kill a long running process.
state – 當前程序的狀態 (Idle, Running, …)
start time – 程序啟動的日期
start since – 當前程序執行時長
requests – 當前程序處理了多少個請求
request duration – 請求時長(微妙)
request method – 請求方法 (GET, POST, …)
request URI – 請求URI
content length – 請求內容長度 (僅用於 POST)
user – 使用者 (PHP_AUTH_USER) (or ‘-’ 如果沒設定)
script – PHP指令碼 (or ‘-’ if not set)
last request cpu – 最後一個請求CPU使用率。
last request memorythe - 上一個請求使用的記憶體

7. 完成
php-fpm狀態頁非常使用,使用zabbix或者nagios監控可以考慮使用xml或者預設方式。用web的話,推薦使用html,表格會比較清晰。