对于php-fpm的參数设置,非常多情况下有这种疑问,就是内置的几个參数比如pm.max_children,pm.start_servers等这几个參数究竟该设置最多为多少才合适。事实上这几个參数往往取决于当前的连接数情况,而大多数情况下,我们非常难断定当前的连接数情况对于我们的pm等几个參数是否合适。所以借助于php-fpm状态页能够非常方便的告诉我们这几个參数的设置是否合适。



    要开启php-fpm的状态页事实上非常easy在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的状态为空暇的话,那么这些相关的信息将会以最后请求的服务相关,否则信息取决于当前请求的服务.

使用php-fpm状态页观察当前的php-fpm状态的更多相关文章

  1. Nginx 高级配置-状态页配置

    Nginx 高级配置-状态页配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 建议将nginx的监控状态的值通过zabbix或者Open-Falcon之类的监控工具来监控状态,并 ...

  2. nginx启用status状态页

    nginx和php-fpm一样都内建了一个状态页,通过查看状态页信息可以连接到nginx服务负载情况,还可以利用状态页信息配zabbix监控,这里先介绍nginx的status状态页的使用. stau ...

  3. TCP状态转换图、滑动窗口、半连接状态、2MSL

    一.TCP状态转换图 下图对排除和定位网络或系统故障时大有帮助,也帮助我们更好的编写Linux程序,对嵌入式开发也有指导意义.    先回顾一下TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 ...

  4. TCP的状态兼谈Close_Wait和Time_Wait的状态

    原文链接: http://www.2cto.com/net/201208/147485.html TCP的状态兼谈Close_Wait和Time_Wait的状态   一 TCP的状态: 1).LIST ...

  5. 重学 Java 设计模式:实战状态模式「模拟系统营销活动,状态流程审核发布上线场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! @ 目录 一.前言 二.开发环境 三.状态模式介绍 四.案例场景模拟 1 ...

  6. jq:翻页时,保存上页多选框checkbox选中状态

    这里主要讲一种:中间的 checkbox 是 通过Ajax调出的. 则翻页时,为了保存上页的选定状态,可在页面中定义一个变量,用来存储选中状态的值. <input class="cli ...

  7. 查看Tomcat状态页,管理app,主机管理

    Server Status 通过点击这个按钮我们可以查看Tomcat的状态,点击,弹出403错误页面 通过查看官方文档 因此,创建manager.xml # cat /usr/local/tomcat ...

  8. HAProxy的状态页

    启用基于程序编译时默认设置的统计报告,不能用于"frontend"区段,只要没有另外的其他设定,他们就会使用如下的配置stats uri    : /haproxy$statsst ...

  9. 11月6日下午PHP注册审核(审核状态控制登录、可以更改审核状态)

    1.创建登录界面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...

随机推荐

  1. 【Linux探索之旅】第二部分第四课:文件操纵,鼓掌之中

    内容简介 1.第二部分第四课:文件操纵,鼓掌之中 2.第二部分第五课预告:用户和权限 文件操纵,鼓掌之中 既然上一课我们学习了Linux中的文件组织方式,那么现在就该是玩弄,啊不,是操纵它们的时候了. ...

  2. Effective C++ Item 32 确保你的 public 继承模子里出来 is-a 关联

    本文senlie原版的,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:"public继承"意味 is-a.适用于 base classe ...

  3. Lua面向对象设计(转)

    首先对于Lua语言,它没有打算被用来进行大型的程序设计,相反,Lua目标定于小型到中型的程序设计,通常是作为大型系统的一部分,所以它只提供了一套精简的元素,很多高级语言的概念都没有.这样Lua就成为了 ...

  4. RH033读书笔记(9)-Lab 10 Understanding the Configuration Tools

    Lab 10 Understanding the Configuration Tools Sequence 1: Configuring the Network with system-config- ...

  5. SQL_substr功能测试

    原创作品.从 "深蓝blog" 博客,欢迎转载,请务必注明转载的来源.权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/articl ...

  6. Server SAN:弄潮儿云计算时代

    最初发表于<程序猿>2014年7每月一次. 4月30日本.Redhat公布1.71十亿收购Ceph开发商Inktank公司,加上之前2011年10月1.36十亿收购Gluster,Redh ...

  7. 【转】Robot Framework 快速入门

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  8. Grant的时候报错的解决:Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES)

    mysql> grant all on *.* to 'root'@'192.168.1.1' identified by 'password'; ERROR 1045 (28000): Acc ...

  9. hadoop-mapreduce在maptask执行分析

    MapTask执行通过执行.run方法: 1.生成TaskAttemptContextImpl实例,此实例中的Configuration就是job本身. 2.得到用户定义的Mapper实现类,也就是m ...

  10. AndroidManifest:VersionCode和VersionName

    Google为APK定义了两个关于版本号属性:VersionCode和VersionName,他们有不同的用途. VersionCode:对消费者不可见.仅用于应用市场.程序内部识别版本号,推断新旧等 ...