注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

态度决定高度

英语,沟通,rhca,管理

 
 
 

日志

 
 

平滑升级 nginx  

2010-10-25 20:12:39|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

当为在线服务的 nginx 升级或添加模块时,能否可以平滑升级呢。nginx 常更新,开发者应该早就注意到这问题。

查看其 wiki 可以做到。

有 nginx 的 kill 信号机制,关键信号:

USR2 平滑升级可执行程序。
WINCH 从容关闭工作进程
QUIT 从容关闭

1、先发送 USR2 信号,如:


kill -USR2 `cat logs/nginx.pid`  
kill -USR2 `cat logs/nginx.pid`

此时用 ps -ef | grep nginx 可以看到多了一倍的 nginx 的相关进程。同时 logs 目录下多了一个 nginx.pid.oldbin 文件,记录的是旧的 nginx 主进程的 pid。

2、用 WINCH 信号关闭旧的工作进程


kill -WINCH `cat logs/nginx.pid.oldbin`  
kill -WINCH `cat logs/nginx.pid.oldbin`

此时,旧的 nginx 主进程还没关闭的,只是旧的 nginx 工作进程关了。如果正常可以执行第3部

3、用 QUIT 信号关闭旧的 nginx 主进程


kill -QUIT `cat logs/nginx.pid.oldbin`  
kill -QUIT `cat logs/nginx.pid.oldbin`

这样算升级了,新的主进程退出后,旧的主进程会由移除 .oldbin 前缀,恢复为它的 .pid 文件,这样,一切就都恢复到升级之前了。

当然在第2部的时候可能发现不对,可以补救,你仍可以恢复旧的服务器:


发送 HUP 信号给旧的主进程 - 它将在不重载配置文件的情况下启动它的工作进程
发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程
发送 TERM 信号给新的主进程,迫使其退出
如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号
  评论这张
 
阅读(953)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018