性能文章>Java服务异常排查定位大图>

Java服务异常排查定位大图原创

348369

真正的大师永远怀着一颗学徒的心

引言

研发工程师日常的工作除了开发实现新需求之外,排查定位问题也是重要的组成部分。如果在发生线上故障的时能够快速定位线上bug并且修复bug,不仅是研发工程师技术能力的重要体现,同时也可以帮助线上及时止血避免平台故障进一步蔓延,从而导致影响用户体验或者产生不可挽回的资损。但是实际上很多研发工程师由于工作经验还不充足,导致经常在遇到问题的时候不知所措,不知道该如何分析排查定位问题。

因此本文主要聚焦日常工作中经常遇到的异常场景,梳理了问题排查定位的思路大图,这样大家在实际项目中如果遇到类似的异常场景,可以按照思路大图进行问题排查定位解决,相信大家掌握了故障定位的分析套路之后就可以做到遇到问题时临危不乱。

Java服务异常

系统资源问题定位

image1.png

系统资源问题定位的核心是找到到底是哪个进程在异常占用系统资源,特别是在服务器中混部了多种服务的时候,经常会遇到系统资源竞用的情况。因此需要确定异常进程的pid,然后再继续分析异常服务中到到底是哪个工作线程出现异常,如果并不是代码问题导致的,那么则需要考虑增加硬件配置来承载混部的各个服务。

JVM内存溢出问题定位

image3.png
JVM内存溢出的问题应该是每个研发工程师都会遇到的问题,主要大概就是JVM参数设置不合理、代码Bug等几方面的原因。其中代码Bug为主要原因,因此在我们实际写代码的过程中就需要考量内存占用的问题,特别是对于一些递归操作、服务内一次缓存大量数据、在for循环中查询数据等都要特别注意或者避免。

接口响应慢问题定位

image3.png

服务接口响应慢的问题大概是这三种异常场景中最复杂的,主要可以从两个层面进行分析,一个是服务自身存在问题导致接口响应慢,另一个是服务的依赖方出现响应慢导致。

因此分析排查定位过程也是主要从这两方面出发,服务自身问题主要包括代码Bug、系统资源异常使用等,依赖方主要包括依赖的中间件、下游服务接口等。

总结

本文主要梳理了日常研发工作中最常见的三种异常场景,分别是服务器资源使用异常、Java服务内存溢出异常以及接口响应超时异常。同时结合实际的经验提炼了各个异常情况下的问题根因分析思路以及排查定位大图,大家在遇到类似问题的时候可以参考大图中的思路进行问题排查定位以及解决。

END

创作不易,如果各位同学觉得文章还不错的话,麻烦分享+点赞+收藏+在看交流哦。

关注公众号:慕枫技术笔记,回复【学习资料】领取海量技术学习以及面试资料,也可以和号主沟通交流考研、简历优化、技术面试。

点赞收藏
慕枫技术笔记
请先登录,查看6条精彩评论吧
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步

为你推荐

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

没有二十年功力,写不出Thread.sleep(0)这一行“看似无用”的代码!

技术分享 | 幽灵攻击与编译器中的消减方法介绍

技术分享 | 幽灵攻击与编译器中的消减方法介绍

【全网首发】微服务10:系统服务熔断、限流

【全网首发】微服务10:系统服务熔断、限流

【全网首发】MQ-消息堆积-JDK Bug导致线程阻塞案例分析

【全网首发】MQ-消息堆积-JDK Bug导致线程阻塞案例分析

【全网首发】不经意的两行代码把CPU使用率干到了90%+

【全网首发】不经意的两行代码把CPU使用率干到了90%+

如何修改 Nginx 源码实现 worker 进程隔离

如何修改 Nginx 源码实现 worker 进程隔离

9
6