php-fpm的平滑启动

 

信号

SIGINT、SIGTERM、SIGQUIT:退出Fpm,在master收到退出信号后将向所有的 worker 进程发送退出信号,通知 worker 退出,然后 master 退出
SIGUSR1: 重新加载日志文件,生产环境中通常会根据时间对日志进行切割,切割后会生成一个新的日志文件,如果进程不重新加载文件,则无法继续写入日志,这时就需要向 master 发送一个 USR1 的信号,告诉 master 重新加载日志文件。
SIGUSR2: 重启 Fpm,首先 master 也是会向所有的 worker进程发送退出信号,等全部 worker 成功退出后,master 会调用 execvp() 重新启动一个新的 Fpm,最后旧的 master 退出。
其中上面的信号可以省略 SIG,也可以小写。比如:kill -SIGUSR2 pid -> kill -USR2 pid -> kill -usr2 pid
————————————————
版权声明:本文为CSDN博主「xubin.nic」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33182756/article/details/107875821

 

 

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个进程会被强行杀掉。如果这些进程正在处理较为重要的任务,例如注册、登陆、充值等业务,可能会造成用户体验、金钱上的损失。
————————————————
版权声明:本文为CSDN博主「早稻田」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_34515820/article/details/113012909

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值