我是靠谱客的博主 快乐白羊,最近开发中收集的这篇文章主要介绍java jar包 平滑重启,nginx 平滑重启的实现方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、背景

在服务器开发过程中,难免需要重启服务加载新的代码或配置,如果能够保证server重启的过程中服务不间断,那重启对于业务的影响可以降为0。最近调研了一下nginx平滑重启,觉得很有意思,记录下来供有兴趣的同学查阅。

二、重启流程

重启意味着新旧接替,在交接任务的过程中势必会存在新旧server并存的情形,因此,重启的流程大致为:

启动新的server

新旧server并存,两者共同处理请求,提供服务

旧的server处理完所有的请求之后优雅退出

这里,最主要的问题在于如何保证新旧server可以并存,如果重启前后的server端口一致,如何保证两者可以监听同一端口。

三、nginx实现

为了验证nginx平滑重启,笔者首先尝试nginx启动的情形下再次开启一个新的server实例,结果如图:

1e485325f314fd07e90dabe0f89fc0f1.png

很明显,重新开启server实例是行不通的,原因在于新旧server使用了同一个端口80,在未开始socket reuseport选项复用端口时,bind系统调用会出错。nginx默认bind重试5次,失败后直接退出。而nginx需要监听IPV4地址0.0.0.0和IPV6地址[::],故图中打印出10条emerg日志。

接下来就开始尝试平滑重启命令了,一共两条命令&

最后

以上就是快乐白羊为你收集整理的java jar包 平滑重启,nginx 平滑重启的实现方法的全部内容,希望文章能够帮你解决java jar包 平滑重启,nginx 平滑重启的实现方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部