PHP 平滑重启原理

重启命令

// 命令
systemctl reload php-fpm

// 原理
/bin/kill -USR2 主进程id

配置php.conf

[global]
pid = run/php7-fpm.pid
error_log = /data/logs/php/php7-fpm.err
log_level = notice
// 增加以下配置
process_control_timeout = 10

process_control_timeout是留给子进程处理来自master进程信号的时间限制。

master进程根据接收到的信号以及当前的php-fpm运行状态决定发送给worker进程的是SIGQUIT还是SIGTERM,同时注册时间为process_control_timeout的定时时间,
如果在process_control_timeout时间内子进程没退出,master就会升级信号,SIHQUIT->SIGTERM,SIGTERM->SIGKILL,当信号为SIGTERM时还会注册1s的定时事件,留多1秒给worker进程结束,1秒后还未结束,信号升级为SIGKILL,直接终止worker进程。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容