线上问题与排查
死锁
一文学会Java死锁和CPU 100% 问题的排查技巧
如何避免死锁,我们有什么套路可循?(举例说明,浅显生动,给出了死锁发生的Coffman条件,并从破坏条件角度讲如何避免死锁)
CPU利用率高
- 可能在频繁进行Full GC
- 进行比较耗时的计算
如果是Full GC次数过多,那么通过jstack得到的线程信息会是类似于VM Thread之类的线程,而如果是代码中有比较耗时的计算,那么我们得到的就是一个线程的具体堆栈信息。
原创|面试官:线上服务器CPU占用率高如何排查定位问题?
Full GC频繁
总结来说,对于FullGC次数过多,主要有以下两种原因:
- 代码中一次获取了大量的对象,导致内存溢出,此时可以通过eclipse的mat工具查看内存中有哪些对象比较多;
- 内存占用不高,但是FullGC次数还是比较多,此时可能是显示的System.gc()调用导致GC次数过多,这可以通过添加-XX:+DisableExplicitGC来禁用JVM对显示GC的响应。
系统运行缓慢,CPU100%,以及FullGC次数过多问题的排查思路
不定期出现的接口耗时现象
首先找到该接口,通过压测工具不断加大访问力度,如果说该接口中有某个位置是比较耗时的,由于我们的访问的频率非常高,那么大多数的线程最终都将阻塞于该阻塞点,这样通过多个线程具有相同的堆栈日志,我们基本上就可以定位到该接口中比较耗时的代码的位置。
系统运行缓慢,CPU100%,以及FullGC次数过多问题的排查思路
以上是 线上问题与排查 的全部内容, 来源链接: utcz.com/z/516938.html