;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 SAPI(ServerApplicationProgrammingInterface,服务端应用编程端口)一样。
对于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个进程,如果请求访问较多,那么肯定会出现502、504错误,对于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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27043155/viewspace-733323/