Home >Backend Development >PHP Tutorial >使用php-fpm状态页观察当前的php-fpm状态

使用php-fpm状态页观察当前的php-fpm状态

WBOY
WBOYOriginal
2016-06-23 13:51:30888browse

    对于php-fpm的参数设置,很多情况下有这样的疑问,就是内置的几个参数例如pm.max_children,pm.start_servers等这几个参数到底该设置最多为多少才合适。其实这几个参数往往取决于当前的连接数情况,而大多数情况下,我们很难断定当前的连接数情况对于我们的pm等几个参数是否合适。所以借助于php-fpm状态页可以很方便的告诉我们这几个参数的设置是否合适。

    要开启php-fpm的状态页其实很简单在nginx的配置文件中加入:
    location /status {
            auth_basic "status page";
            auth_basic_user_file /etc/nginx/login;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;
        }
    上面的auth_basic和auth_basic_user_file不是必须的,但这些都是敏感信息,一般不能让其它人看到,所以这里做了认证。在php-fpm.conf中打开:
    pm.status_path = /status
    
    然后在浏览器中打开localhost/status就可以查看到当前的状态信息了
    pool:                 www
    process manager:      dynamic
    start time:           17/Aug/2014:15:25:50 -0400
    start since:          7702
    accepted conn:        1486
    listen queue:         0
    max listen queue:     129
    listen queue len:     128
    idle processes:       9
    active processes:     1
    total processes:      10
    max active processes: 20
    max children reached: 2
    slow requests:        0

    下面介绍每个参数的作用:
    pool:php-fpm池的名称,一般都是应该是www
    process manage:进程的管理方法,php-fpm支持三种管理方法,分别是static,dynamic和ondemand,一般情况下都是dynamic
    start time:php-fpm启动时候的时间,不管是restart或者reload都会更新这里的时间
    start since:php-fpm自启动起来经过的时间,默认为秒
    accepted conn:当前接收的连接数
    listen queue:在队列中等待连接的请求个数,如果这个数字为非0,那么最好增加进程的fpm个数
    max listen queue:从fpm启动以来,在队列中等待连接请求的最大值
    listen queue len:等待连接的套接字队列大小
    idle processes:空闲的进程个数
    active processes:活动的进程个数
    total processes:总共的进程个数
    max active processes:从fpm启动以来,活动进程的最大个数,如果这个值小于当前的max_children,可以调小此值
    max children reached:当pm尝试启动更多的进程,却因为max_children的限制,没有启动更多进程的次数。如果这个值非0,那么可以适当增加fpm的进程数
    slow requests:慢请求的次数,一般如果这个值未非0,那么可能会有慢的php进程,一般一个不好的mysql查询是最大的祸首。

    如果想看到更加详细的信息,可以使用localhost/status?full查看每个子进程更加额外的信息,拿其中的一个子进程来说明:
    pid:                  6917
    state:                Idle
    start time:           17/Aug/2014:15:27:46 -0400
    start since:          8399
    requests:             35
    request duration:     69295
    request method:       GET
    request URI:          /member.php?mod=logging&action=login&infloat=yes&frommessage&inajax=1&ajaxtarget=messagelogin
    content length:       0
    user:                 -
    script:               /usr/local/nginx/html/member.php
    last request cpu:     72.16
    last request memory:  3145728
    
    这里的都比较好理解,主要看下content length和user
    content length:这里记录的是POST请求的内容长度.
    user:如果设置了PHP_AUTH_USER就会显示对于的值,否则显示为0.
    
    这里需要注意的是如果state的状态为空闲的话,那么这些相关的信息将会以最后请求的服务相关,否则信息取决于当前请求的服务.
   

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn