php-fpm的重启/关闭

理解

master进程可以理解以下信号
INT (2)停止
TERM(15) 立刻终止
QUIT (3) 平滑终止
USR1 重新打开日志文件
USR2 平滑重载所有worker进程并重新载入配置和二进制模块
示例:

php-fpm

测试php-fpm配置:/usr/local/php/sbin/php-fpm -t
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

启动:/usr/local/php/sbin/php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf

关闭:kill -INT cat /usr/local/php/var/run/php-fpm.pid

重启:kill -USR2 cat /usr/local/php/var/run/php-fpm.pid

查看php-fpm进程数:

ps -aux | grep -c php-fpm

  1. 在php-fpm的配置文件中,有两个指令非常重要,就是"pm.max_children" 和 "request_terminate_timeout"
     第一个指令"pm.max_children" 确定了php-fpm的处理能力,原则上是越多越好,但这个是在内存足够大的前提下,每开启一个php-fpm进程要占用近30M左右的内存
     如果请求访问较多,那么可能会出现502,504错误。对于502错误来说,属于繁忙进程而造成的,对于504来说,就是客户发送的请求在限定的时间内没有得到相应,过多的请求导致“504 Gateway Time-out”。这里也有可能是服务器带宽问题。
    另外一个需要注意的指令"request_terminate_timeout",它决定php-fpm进程的连接/发送和读取的时间,如果设置过小很容易出现"502 Bad Gateway" 和 “504 Gateway Time-out”,默认为0,就是说没有启用,不加限制,但是这种设置前提是你的php-fpm足够健康,这个需要根据实际情况加以限定。

推荐阅读更多精彩内容