加入收藏 | 设为首页 | 会员中心 | 我要投稿 鄂州站长网 (https://www.0711zz.com.cn/)- 云通信、区块链、物联平台、操作系统、高性能计算!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

聊聊nginx平滑重启和FPM平滑重启

发布时间:2022-08-10 12:02:37 所属栏目:PHP教程 来源:互联网
导读:平滑重启 GR是Graceful Restart(平滑重启)的简称,是一种在协议重启时保证转发业务不中断的机制。 GR机制的核心在于:当某设备进行协议重启时,能够通知其周边设备在一定时间内将到该设备的邻居关系和路由保持稳定。在协议重启完毕后,周边设备协助其进行
  平滑重启
 
  GR是Graceful Restart(平滑重启)的简称,是一种在协议重启时保证转发业务不中断的机制。
  GR机制的核心在于:当某设备进行协议重启时,能够通知其周边设备在一定时间内将到该设备的邻居关系和路由保持稳定。在协议重启完毕后,周边设备协助其进行信息(包括支持GR的路由/MPLS相关协议所维护的各种拓扑、路由和会话信息)同步,在尽量短的时间内使该设备恢复到重启前的状态。在整个协议重启过程中不会产生路由振荡,报文转发路径也没有任何改变,整个系统可以不间断地转发数据。这个过程即称为平滑重启。
 
  nginx平滑重启
 
  nginx进程分为master主进程和worker工作进程,nginx的平滑重启通过信号HUB控制。
 
  0ad5774570f0acecd781efd944017ea.jpg
 
  注:在POSIX兼容的平台上,SIGUSR1和SIGUSR2是发送给一个进程的信号,它表示了用户定义的情况。
 
  为了详细分析nginx的平滑重启过程,我们持续监控nginx进程变化。
  发送HUP信号
 
 
  kill -HUP `cat /home/git/nginx/logs/nginx.pid`
 
  通过观察,可以分析出大致的平滑重启过程为:
  1. master使用新配置 fork出n-1个worker及新master
  2. 新worker处理新情求,旧worker执行完退出
  3. master重新加载配置,期间使用新master接管服务
  4. master加载配置完毕,新master切换为worker工作模式
  平滑重启完,master进程号并不会发生变化。
 
  nginx平滑升级
 
  HUP仅用于平滑重启,加载配置等,如果要平滑升级nginx版本,重新加载编译的二进制文件,需要借助于USR2信号。
 
  1. 发送USR2信号
 
 
  kill -USR2 `cat /home/git/nginx/logs/nginx.pid`
 
  观察到nginx进程,fork出新master及worker,此时nginx.pid内容已经发生变化,并且在logs目录下生成了nginx.pid.oldbin文件,记录旧master pid.
 
  2. 向旧master发送WINCH信号,nginx woker会优雅地停止服务,即:停止接收新的请求,但是不会终止已经在处理的请求。一段时间后,旧nginx的所有worker进程全部退出,只剩下master进程,而用户请求全部都由新的nginx进程处理。
 
 
  kill -WINCH `cat /home/git/nginx/logs/nginx.pid.oldbin`
 
  eb088238bc325e794efda24b678e844.jpg
 
  3、向旧master发送QUIT信号,旧nginx进程完全退出,至此平滑升级完成。
 
 
  kill -QUIT `cat /home/git/nginx/logs/nginx.pid.oldbin`
 
 
  FPM平滑重启
 
  FPM(FastCGI 进程管理器)用于替换 PHP FastCGI 的大部分附加功能,php5.3.3之后已经集成FPM,在./configure的时候带 –enable-fpm参数即可开启PHP-FPM。
 
  FPM的平滑重启需要通过USR2信号控制,不过与nginx的平滑重启过程有较大的不同。

(编辑:鄂州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读