09 生产环境服务嚣变慢,如何诊断处理?

vvEcho 2024-01-20 14:08:36
Categories: Tags:

使用 top 指令,服务器中 CPU 和内存的使用情况,-H 可以按 CPU 使用率降序,-M 内存使用率降序。排除其他进程占用过高的硬件资源,对 JQva 服务造成影响。
如果发现 CPU 使用过高,可以使用 top 指令查出 JVM 中占用 CPU 过高的线程,通过 jstack 找到对应的线程代码调用,排查出问题代码。
如果发现内存使用率比较高,可以 dump 出 JVM 维内存,然后借助 MAT 进行分析,查出大对象或者占用最多的对象来自哪里,为什么会长时间占用这么多;如果 dump 出的堆内存文件正常,她时可以考虑推外内存被大量使用导致出现问题,需要借助操作系统指令 pmap 查出进程的内存分配情况、 gobdump 出具体内存信息、 perf 查看牵地函教调用等。
如果 CPU 和内存使用率都很正常,那就需要进一步开启 GC 日志,分析用户线程督停的时间,各部分内存庄域 GC 次教和时间等指标,可以借助 jstat 或可视化工具 GCeasy 等,如果问题出店 GC 上面的话,考虑是否是内存不够、根据垃圾对象的特点进行参教调优、使用更适合的垃圾收集器;分析 jstack 出来的各个线程状态。如果问题实在比较隐蔽,考虑是否可以开启 jmx ,使用 visualmu 等可视化工具远程监控与分析