博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA进程CPU使用率使用过高故障排查
阅读量:5011 次
发布时间:2019-06-12

本文共 527 字,大约阅读时间需要 1 分钟。

临近月底,用户量上来,发现业务进程频繁从Eureka上掉下来,观察后发现掉下来前进程CPU一直占用比较高。
按 方法查看堆栈信息,发现有个方法很可疑,发给开发人员查看,觉得表数据量太大,查询没有走索引,新建索引后,感觉情况有好转。
排查步骤如下:
1.使用top 定位到占用CPU高的进程PID
top
2.获取线程信息,并找到占用CPU高的线程
ps -mp pid -o THREAD,tid,time | sort -rn
3.将需要的线程ID转换为16进制格式
printf "%x\n" tid
4.打印线程的堆栈信息
jstack pid |grep tid -A 30
同时发现数据库连接有报“Connection reset”的异常,一时也发现不了问题,将dbcp2连接池换成durid。
通过durid的spring监控发现(果真非常强大),还是同样的方法读取行数非常大。
发现《 问题情况非常相似,因为在之前用jstack查看时,就是GC占用CPU非常高。
再仔细看代码,发现某种情况下,确实会读取全量表数据。
优化代码后,问题解决。

转载于:https://www.cnblogs.com/vanuan/p/9575908.html

你可能感兴趣的文章
LeetCode-Binary Tree Level Order Traversal
查看>>
COM组件开发实践
查看>>
yii2 源码分析1从入口开始
查看>>
浅谈网站推广
查看>>
Away3D基础之摄像机
查看>>
Leetcode 128. Longest Consecutive Sequence
查看>>
程序员必须知道的几个Git代码托管平台
查看>>
导电塑料入梦来
查看>>
C# 线程手册 第五章 扩展多线程应用程序 - 什么是线程池
查看>>
笔记1126ASP.NET面试题(转)
查看>>
考研路茫茫--单词情结 - HDU 2243(AC自动机+矩阵乘法)
查看>>
HTTP运行期与页面执行模型
查看>>
tableView优化方案
查看>>
近期思考(2019.07.20)
查看>>
Apache2.4使用require指令进行访问控制
查看>>
冗余关系_并查集
查看>>
做最好的自己(Be Your Personal Best)
查看>>
如何搭建github+hexo博客-转
查看>>
HW2.2
查看>>
将Windows Server 2016 打造成工作站(20161030更新)
查看>>