系统监控异常处理
# 系统监控异常处理
写起来思路很清晰,但实际上整个过程花费了大半天的时间,其实排查的过程中,有很多关键点没有抓到,有很多现象,是可以凭经验条件反射的推断出原因的:
- 看到 cpu 使用率上涨,用 jstack 看使用 cpu 的线程,以及该线程在跑什么代码。
- 找到是 gc 线程,然后看 gc 曲线是否正常。
- 看堆内存曲线,正常的曲线是锯齿形的,如果不是,一次 full GC 之后内存没有明显下降,那基本可以推断发生内存泄漏了。
- 怀疑是内存泄漏的问题,可以跑 jmap,然后拉到 MAT 分析。
- 第四步比较耗时的话,可以同时跑这个命令:jmap -histo pid。看看有没有线索。
jvm 的一些工具:jstack、jmap、jstat、jhat。包括可视化工具:MAT、jvisualvm