LEN

php-fpm 平滑重启和快速重启
php 5.3.3 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbi...
扫描右侧二维码阅读全文
19
2016/06

php-fpm 平滑重启和快速重启

php 5.3.3 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令,
需要使用信号控制:

master进程可以理解以下信号:

SIGINT, SIGTERM 立刻终止
SIGQUIT 平滑终止
SIGUSR1 重新打开日志文件
SIGUSR2 平滑重载所有worker进程并重新载入配置和二进制模块

示例:
php-fpm 关闭:

kill -SIGINT `cat /usr/local/php/var/run/php-fpm.pid`

php-fpm 重启:

kill -SIGUSR2 `cat /usr/local/php/var/run/php-fpm.pid`

查看php-fpm进程数:

ps aux | grep -c php-fpm

netstat -anpo | grep "php-cgi" | wc -l

netstat -anop | grep "php-fpm" | wc -l

“平滑重启”和“快速重启”是两种不同的概念。

php-fpm的reload平滑重启是指:

假设128个php-cgi进程中有50个进程正在处理PHP程序,而剩余的78个进程处于闲置状态,php-fpm接到平滑重启信号后,会kill掉78个闲置进程,然后新启动128个进程,新请求交给新启动的进程来处理,而那50个进程,只有等到它们处理完自己当前正在执行的PHP程序后,才会被干掉。

daetmontools的快速重启:

采用spawn-fcgi启动php-cgi,使用shell脚本、daetmontools监控php-cgi,由shell脚本killall -9 php-cgi然后快速启动php-cgi,虽然时间很短,但是,尚未处理完成的这50个进程会被强行杀掉。如果这些进程正在处理较为重要的任务,例如注册、登陆、充值等业务,可能会造成用户体验、金钱上的损失。
最后修改:2017 年 03 月 26 日 03 : 47 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论