码迷,mamicode.com
首页 > 其他好文 > 详细

报表worker-CPU使用率过高原因排查

时间:2017-09-28 14:05:27      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:public   技术   频繁   jvm   容量   hashmap   网络   ble   使用率   

一、排查过程
1:查看机器监控,初步判断可能有耗CPU的线程
 
技术分享
bf04410e-9f05-4958-83e0-a2ead10a4aaa
2:导出jstack,发现有大量的RUNNABLE线程,都在java-NIO,之前看过下面http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6403933这篇文章,感觉是这个BUG,由于对ES不熟悉,网上看了一些ES资料,寻求从网络寻找类似案例,没有找到结果。
技术分享
acee5685-d3d6-4d18-8f91-6e2b4208d77f
3:第二天,查看NETTY代码发现,netty已经解决了NIO-BUG,可以排除NIO-BUG了。
 
技术分享
2a2ab8d7-faab-49ff-a37c-36e3021568fe
4:导出jstat信息,发现JVM老年代占用过高(达到97%),Full-GC频率超高,FULL-GC总共占用了36小时。初步定位是频繁FULL-GC导致CPU负载过高。
 
技术分享
6a7fb44a-b86a-44a3-9355-5888aae1db3f
5:使用jmap –histo导出堆概要信息,发现有个超大的HashMap。
 
 
技术分享
2dcacbd2-fd8d-431c-93c1-038e98f02f1c
6:使用jmap –dump导出堆。
技术分享
74ae2f08-3c07-43f3-99c2-e4cd27946419
技术分享
6523c119-ba92-4fc0-84ab-e4417672b50d
得出hashMap中的KEY是运单号
二、总结
1:使用缓存时要做容量估算,并考虑数据增长率
2:缓存要有过期时间。

报表worker-CPU使用率过高原因排查

标签:public   技术   频繁   jvm   容量   hashmap   网络   ble   使用率   

原文地址:http://www.cnblogs.com/hhbk/p/7606274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!