工具使用实例及面试题解析

三 一次线上问题排查过程

在实践中使用工具是熟悉工具最好的途径,本节将讲述一个线上问题的完整排查过程,希望加深对JVM工具的认识和掌握。

3.1 问题

有一次,新上线的服务系统在运行了一段时间后出现大量的服务超时警告。根据监控显示,在1分钟内出现了上千次的服务请求超时。

通过查看监控系统中的性能指标,发现YoungGC明显出现异常,较比于旧版本,新版本的YoungGC用时明显增加。当进行YoungGC时,程序会暂停,即出现stop the world现象,而我们规定的服务超时时间是几百毫秒,由于YoungGC时间过长,导致整个服务超时。为此,我们推断服务超时的原因为出现了大量的耗时过多的YoungGC。

为了排查问题,我们下线了一个线上节点,并对线上服务进行回滚处理,接下来就针对线下节点进行分析。

3.2 排查过程

YoungGC主要做如下两件事情:

  • 利用可达性分析算法,标注存活对象;
  • 将存活对象移动到Survivor区或者老年代区。

正常情况下,Survivor区的利用率保持较低的水平,并且比较平稳,新版本上线后,Survivor区的空间利用率迅速上升,并且YoungGC的异常情况和Survivor区的空间利用率异常情况保持一致性。从YoungGC的工作机制来看,我们猜测是程序中长周期的对象越来越多导致YoungGC时间过长。

为此,我们在机器上执行 jmap -dump:format=b,file=heap pid 来保存堆内存文件,并利用MAT工具查看堆中

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java面试必问JVM考点精讲 文章被收录于专栏

“挨踢”行业行情日益严峻,企业招聘的门槛也随之越来越高,大厂hc少之又少。 庞大的知识体系下,不知道学什么、怎么学? 面试高频考点是什么、怎么回答才能得到面试官的青睐? 作为后端求职者,在Java的道路上越走越宽。 本专刊则针对Java面试考点上,精讲JVM知识点,为大家的大厂求职路保驾护航! 针对如今校招痛点,深入详解JVM知识考点,列出高频真题并详细解答!探索JVM精髓!

全部评论

相关推荐

我要娶个什么名:学长你电脑闹鬼了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务