* 1.1找到Cpu消耗比较高的进程:* 1.2通过问题进程找到线程:* 1.3通过线程id进行打印问题代码:* 1.4通过上面步骤的异常代码查询定位代码:* 1.5总结:* 2.其他的定位问题的命令:* 2.1 jps和jmap。
运行时性能问题的首要指标之一是来自 JVM 分析器或 Java 监控工具的高 Java CPU 使用率报告。像这样的小改动会对应用程序性能产生重大影响,尤其是在涉及加密、图形操作或其他 CPU 密集型操作的情况下。
线上排查、性能优化等概念也是面试过程中的“常客”,而对于线上遇到的“疑难杂症”,需要通过理性的思维去分析问题、排查问题、定位问题、解决问题,同时,如果解决掉所遇到的问题或瓶颈后,也可以在能力范围之内尝试最优解以及适当考虑拓展性。
不管处于应急的哪个阶段,我们首先必须想到的是恢复问题,恢复问题不一定能够定位问题,也不一定有完美的解决方案,也许是通过经验判断,也许是预设开关等,但都可能让我们达到快速恢复的目的,然后保留部分现场,再去定位问题、解决问题和复盘。
pidstat -p 866 -u -t 1 3 -> 查找占用cpu较高线程id 2109。jstack -F -l 2109 >> /home/work/zhibi/jstack_2109_83d.txt -> Thread 2109: cpu 98% 发现有死锁。