首页 > 代码库 > 在浏览器里查看Nginx和PHP-FPM的运行状态

在浏览器里查看Nginx和PHP-FPM的运行状态

查看Nginx状态

location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}
curl http://127.0.0.1/nginx_status
http://nginx.org/en/docs/http/ngx_http_status_module.html
输出样例:
Active connections: 3
server accepts handled requests
 17737 17737 49770
Reading: 0 Writing: 1 Waiting: 2
各项解释:
Active connections: 当前 Nginx 正处理的活动连接数.
server accepts handled requests: 总共处理了 17737 个连接, 成功创建 17737 次握手(证明中间没有失败的), 总共处理了 49770 个请求.
Reading: Nginx 读取到客户端的 Header 信息数.
Writing: Nginx 返回给客户端的 Header 信息数.
Waiting: 开启 keep-alive 的情况下, 这个值等于 Active - (Reading + Writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

查看PHP-FPM状态

php-fpm.conf 中开启 pm.status_path = /status
nginx.conf 中配置:
location /status {
    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_index  index.php;
    fastcgi_pass   127.0.0.1:9000;
}
访问 http://127.0.0.1/status?full 查看状态信息(我只开了一个PHP-FPM工作进程):
pool:                 www
process manager:      static
start time:           27/Dec/2014:13:29:00 +0800
start since:          2571
accepted conn:        28
listen queue:         0
max listen queue:     0
listen queue len:     128
idle processes:       0
active processes:     1
total processes:      1
max active processes: 1
max children reached: 0
slow requests:        0

************************
pid:                  1275
state:                Running
start time:           27/Dec/2014:13:29:00 +0800
start since:          2571
requests:             28
request duration:     100
request method:       GET
request URI:          /status?full
content length:       0
user:                 -
script:               -
last request cpu:     0.00
last request memory:  0

附: 下面是php-fpm.conf里的说明
; The URI to view the FPM status page. If this value is not set, no URI will be
; recognized as a status page. It shows the following informations:
;   pool                 - the name of the pool;
;   process manager      - static, dynamic or ondemand;
;   start time           - the date and time FPM has started;
;   start since          - number of seconds since FPM has started;
;   accepted conn        - the number of request accepted by the pool;
;   listen queue         - the number of request in the queue of pending
;                          connections (see backlog in listen(2));
;   max listen queue     - the maximum number of requests in the queue
;                          of pending connections since FPM has started;
;   listen queue len     - the size of the socket queue of pending connections;
;   idle processes       - the number of idle processes;
;   active processes     - the number of active processes;
;   total processes      - the number of idle + active processes;
;   max active processes - the maximum number of active processes since FPM
;                          has started;
;   max children reached - number of times, the process limit has been reached,
;                          when pm tries to start more children (works only for
;                          pm ‘dynamic‘ and ‘ondemand‘);
; Value are updated in real time.
; Example output:
;   pool:                 www
;   process manager:      static
;   start time:           01/Jul/2011:17:53:49 +0200
;   start since:          62636
;   accepted conn:        190460
;   listen queue:         0
;   max listen queue:     1
;   listen queue len:     42
;   idle processes:       4
;   active processes:     11
;   total processes:      15
;   max active processes: 12
;   max children reached: 0
;
; By default the status page output is formatted as text/plain. Passing either
; ‘html‘, ‘xml‘ or ‘json‘ in the query string will return the corresponding
; output syntax. Example:
;   http://www.foo.bar/status
;   http://www.foo.bar/status?json
;   http://www.foo.bar/status?html
;   http://www.foo.bar/status?xml
;
; By default the status page only outputs short status. Passing ‘full‘ in the
; query string will also return status for each pool process.
; Example:
;   http://www.foo.bar/status?full
;   http://www.foo.bar/status?json&full
;   http://www.foo.bar/status?html&full
;   http://www.foo.bar/status?xml&full
; The Full status returns for each process:
;   pid                  - the PID of the process;
;   state                - the state of the process (Idle, Running, ...);
;   start time           - the date and time the process has started;
;   start since          - the number of seconds since the process has started;
;   requests             - the number of requests the process has served;
;   request duration     - the duration in μs of the requests;
;   request method       - the request method (GET, POST, ...);
;   request URI          - the request URI with the query string;
;   content length       - the content length of the request (only with POST);
;   user                 - the user (PHP_AUTH_USER) (or ‘-‘ if not set);
;   script               - the main script called (or ‘-‘ if not set);
;   last request cpu     - the %cpu the last request consumed
;                          it‘s always 0 if the process is not in Idle state
;                          because CPU calculation is done when the request
;                          processing has terminated;
;   last request memory  - the max amount of memory the last request consumed
;                          it‘s always 0 if the process is not in Idle state
;                          because memory calculation is done when the request
;                          processing has terminated;
; If the process is in Idle state, then informations are related to the
; last request the process has served. Otherwise informations are related to
; the current request being served.
; Example output:
;   ************************
;   pid:                  31330
;   state:                Running
;   start time:           01/Jul/2011:17:53:49 +0200
;   start since:          63087
;   requests:             12808
;   request duration:     1250261
;   request method:       GET
;   request URI:          /test_mem.php?N=10000
;   content length:       0
;   user:                 -
;   script:               /home/fat/web/docs/php/test_mem.php
;   last request cpu:     0.00
;   last request memory:  0
;
; Note: There is a real-time FPM status monitoring sample web page available
;       It‘s available in: ${prefix}/share/fpm/status.html
;
; Note: The value must start with a leading slash (/). The value can be
;       anything, but it may not be a good idea to use the .php extension or it
;       may conflict with a real PHP file.
; Default Value: not set
; pm.status_path = /status

在浏览器里查看Nginx和PHP-FPM的运行状态