nginx运维中怎么样平滑升级

发布时间 - 2019-11-26 00:00:00    点击率:

可以在不中断服务的情况下 - 新的请求也不会丢失,使用新的 nginx 可执行程序替换旧的(当升级新版本或添加/删除服务器模块时)。        ( 推荐学习:nginx运维 )

首先,使用新的可执行程序替换旧的(最好做好备份),然后,发送 USR2 (kill -USR2 pid)信号给主进程。

主进程将重命名它的 .pid 文件为 .oldbin (比如:/usr/local/nginx/logs/nginx.pid.oldbin),然后执行新的可执行程序,依次启动新的主进程和新的工作进程:

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
33134 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
33135 33126 nobody   0.0  1380 kqread nginx: worker process (nginx)
33136 33126 nobody   0.0  1368 kqread nginx: worker process (nginx)
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

在这时,两个 nginx 实例会同时运行,一起处理输入的请求。要逐步停止旧的实例,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭:

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
33135 33126 nobody   0.0  1380 kqread nginx: worker process is shutting down (nginx)
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

一段时间后,旧的工作进程处理了所有已连接的请求后退出,就仅由新的工作进程来处理输入的请求了:

  PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
33126     1 root     0.0  1164 pause  nginx: master process /usr/local/nginx/sbin/nginx
36264 33126 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)

这时,因为旧的服务器还尚未关闭它监听的套接字,所以,通过下面的几步,你仍可以恢复旧的服务器:

发送 HUP 信号给旧的主进程 - 它将在不重载配置文件的情况下启动它的工作进程

发送 QUIT 信号给新的主进程,要求其从容关闭其工作进程

发送 TERM 信号给新的主进程,迫使其退出

如果因为某些原因新的工作进程不能退出,向其发送 KILL 信号

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

如果尝试升级成功,而你也希望保留新的服务器时,发送 QUIT 信号给旧的主进程使其退出而只留下新的服务器运行:

      PID  PPID USER    %CPU   VSZ WCHAN  COMMAND
    36264     1 root     0.0  1148 pause  nginx: master process /usr/local/nginx/sbin/nginx
    36265 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36266 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)
    36267 36264 nobody   0.0  1364 kqread nginx: worker process (nginx)


# nginx  # 可执行  # 情况下  # 将在  # 你也  # 使其  # 几步  # 就将  # 你必须  # 新版本  # 配置文件 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在宝塔面板中修改默认建站目录?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  如何快速搭建安全的FTP站点?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Android GridView 滑动条设置一直显示状态(推荐)  微信小程序 input输入框控件详解及实例(多种示例)  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  如何在IIS7上新建站点并设置安全权限?  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  Laravel如何实现事件和监听器?(Event & Listener实战)  EditPlus 正则表达式 实战(3)  Laravel如何实现用户注册和登录?(Auth脚手架指南)  如何快速搭建高效可靠的建站解决方案?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  如何在IIS服务器上快速部署高效网站?  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  微信小程序 scroll-view组件实现列表页实例代码  网站制作报价单模板图片,小松挖机官方网站报价?  Swift中swift中的switch 语句  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  如何在景安云服务器上绑定域名并配置虚拟主机?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  如何挑选优质建站一级代理提升网站排名?  黑客如何利用漏洞与弱口令入侵网站服务器?  iOS正则表达式验证手机号、邮箱、身份证号等  如何在VPS电脑上快速搭建网站?  如何利用DOS批处理实现定时关机操作详解  如何制作一个表白网站视频,关于勇敢表白的小标题?  网站制作价目表怎么做,珍爱网婚介费用多少?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Laravel如何自定义分页视图?(Pagination示例)  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  javascript日期怎么处理_如何格式化输出  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  浅析上传头像示例及其注意事项  如何在企业微信快速生成手机电脑官网?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何在IIS中新建站点并配置端口与物理路径?  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比