日常Bug排查-流量全部下线

解Bug之路

共 802字,需浏览 2分钟

 · 2021-06-27

前言

日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材^_^。

Bug现场

一次快速发布,确导致业务跌0,还好是个小业务,不然就GG了。 

流量全部下线

由于我们发布分为两组,在第二组发布的时候,业务跌0。很明显的,第一反应就是,第一组发布后流量并没有上线成功,导致第二组流量下线的时候,产线没有任何服务器提供服务。

为什么第一次发布时候没有发上去

笔者详细的检查了一下发布的过程。发现我们的发布脚本是在tomcat启动脚本运行完毕之后检查进程是否存在。如果存在,就表明应用启动成功。然后就上线流量! 

tomcat容器启动成功不代表应用准备完毕

这一看就发现了问题,tomcat容器启动是几秒内就能Okay的(外置的tomcat)容器。但是tomcat启动并且进程存在并不代表应用准备就绪了。因为这时候Spring还在加载,如果是dubbo应用的话,往zookeeper的临时节点都还没注册,当然上线流量会失败!

为什么会犯这种错误

因为这个应用原来是用jboss容器启动的,jboss容器的启动脚本会等内部应用准备就绪之后才会返回。迁移到tomcat之后,tomcat脚本不等内部应用启动成功就返回。进而让发布者以为"发布"成功了!

应该怎么做

在这种情况下,我们需要在tomcat容器中提供checkHealth这样的接口,在checkHealth中检查各种资源信息。等脚本checkHealth通过后,才能确认应用准备完毕。

总结

在jboss往tomcat迁移中。这是个很常见,但确很容易导致重大问题的坑。


浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报