线上服务发布抖动,该怎么解决呢

之前的文章分别讲了优雅上线优雅下线,实际工作中做了优雅上下线后,服务发布后还是会有短暂的“抖动”,接口的响应时间急剧升高后又恢复正常,就和下面的监控图一样,图片来源于 得物 的InfoQ技术文档服务发布时网络“抖动”

线上服务发布抖动,该怎么解决呢

背景

小卷现在负责的系统已经达到20万QPS了,每天即使是在半夜,QPS依然过万。每次系统升级发布时,抖动比较频繁,上游应用方都跑过来质问,怎么服务又超时了啊,还能不能用了。。。(巴拉巴拉),小卷只能陪着笑脸的一番解释。后来小卷加上了优雅上下线,想着这下发布应该没问题了吧。哪知再次发布,超时问题依然存在。。。小卷决定好好分析一下发布抖动问题的根因是啥

1.抖动问题分析

服务抖动问题需要根据具体场景分析,这里列一下可能的原因:

  • redis、DB连接初始化耗时长,引起启动后的接口RT升高
  • JIT即时编译耗时长,造成CPU利用率高,引起接口RT升高

对于高并发的应用来说,这里JIT即时编译是通用的原因。

JIT是什么?

JIT(just-in-time)即时编译,是一种执行计算机代码的方法,这种方法涉及在程序执行过程中(在执行期)而不是在执行之前进行。关于JIT的历史,摘抄一段维基百科上的内容

最早发布的JIT编译器是 约翰·麦卡锡在1960年对LISP的研