Linux下Nginx里边的php-fpm 重启和重载配置(平滑重启)
NginxNginx进程分为master主进程和worker工作进程。master进程通过信号通知worker进程执行工作。命令sudo nginx -s reload 重载配置(平滑重启)sudo service nginx restart 重启我们先看看没有请求的情况下,操作以上命令在服务器上展示的结果。很明显的可以看到,当 nginx reload 的时候master进程ID是没有变化的,w
Nginx
Nginx
进程分为master
主进程和worker
工作进程。master
进程通过信号通知worker
进程执行工作。
- 命令
- sudo nginx -s reload 重载配置(平滑重启)
- sudo service nginx restart 重启
我们先看看没有请求的情况下,操作以上命令在服务器上展示的结果。
很明显的可以看到,当 nginx reload 的时候 master
进程ID是没有变化的,worker
进程ID是有变化的。而nginx restart 的时候 master
,worker
的进程ID都有变化。处理过程接下来再讨论,我们再来看看正在处理请求的情况下,nginx 进程变化情况。
用 watch
命令进行实时监控
watch -n1 'ps -ef | grep nginx | grep -v grep'
- 1
用 sleep
创造延时效果
<?php
sleep(10);
echo 'Hello';
- 1
- 2
- 3
sudo nginx -s reload
- 1
sudo service nginx restart
- 1
可以看到这种情况下。reload 时,旧的worker
进程和新的worker
进程是共存的,旧的worker
进程在处理完请求后会被杀掉。而 restart 时,不会存在新旧共存的情况(master
,worker
都是)。如果有请求未完成时。旧的master
,worker
会有一段时间处理请求(超时时间)。然后被杀掉,创建新的master
,worker
进程。所以 restart 的时候nginx 会有卡顿的现象。
PHP-FPM
php-fpm
进程也分为master
主进程和worker
工作进程。
- 命令
- sudo service php-fpm reload 重载配置(平滑重启)
- sudo service php-fpm restart 重启
没有请求时,截图通 nignx 的截图类似,就不上图了。
在有请求未完成的时。当 restart,请求会直接断掉。reload 平滑重启的条件是在php-fpm.conf
文件中设置process_control_timeout
参数 (这个参数默认值为0),这个参数表示在php-fpm
reload 后,旧的worker
的最大存活时间。
参考连接
- http://yueqian.sinaapp.com/a/61.html
- https://www.robberphex.com/2017/02/599
- https://blog.csdn.net/yusiguyuan/article/details/40924415
更多推荐
所有评论(0)