- -! CC截图。 不过已经知道了,刚开软件的时候都站25%左右CPU过一段时间就归零了。
你对这个回答的评价是
你對这个回答的评价是?
一个应用占用CPU很高除了确实是計算密集型应用之外,通常原因都是出现了死循环
(友情提示:本博文章欢迎转载,但请注明出处:hankchen)
以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题
通过ps aux | grep PID命令,可以进一步确定是tomcat进程出现了问题但是,怎么定位到具体线程或者代码呢
找到了耗时最高的线程28802,占用CPU时间快两个小时了!
其次将需要的线程ID转换为16进制格式:
最后打印线程的堆栈信息:
找到出现问题的代码了!
问题僦出在标红的代码部分如果this.in.read()返回的数据小于等于0时,循环就一直进行下去了而这种情况在网络拥塞的时候是可能发生的。
至于具体怎麼修改就看业务逻辑应该怎么对待这种特殊情况了
最后,总结下排查CPU故障的方法和技巧有哪些:
1、top命令:Linux命令可以查看实时的CPU使用情況。也可以查看最近一段时间的CPU使用情况
2、PS命令:Linux命令。强大的进程状态监控命令可以查看进程以及进程中线程的当前CPU使用情况。属於当前状态的采样数据
3、jstack:Java提供的命令。可以查看某个进程的当前线程栈运行情况根据这个命令的输出可以定位某个进程的所有线程嘚当前运行状态、运行代码,以及是否死锁等等
4、pstack:Linux命令。可以查看某个进程的当前线程栈运行情况
(友情提示:本博文章欢迎转载,但请注明出处:hankchen)
将PS的暂存盘设置一下
编辑--首选項--性能里可设置。
之后若还是不行的话建议换一个低一点的版本,希望有帮到你:)
你对这个回答的评价是
cpu温度高不高?CPU散热好吗昰笔记本?还是台式机
你对这个回答的评价是?
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。