mc java 连接超时_Java进程CPU占用高导致的网页请求超时的故障排查
一、发现问题的系统检查:
一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查load average超过4负载很大,PID为7163的进程占用到了800%多。

二、定位故障
根据这种故障的一般处理思路,先找出问题进程内CPU占用率高的线程,再通过线程栈信息找出该线程当时在运行的问题代码段,操作如下:
2.1、根据思路查看高占用的“进程中”占用高的“线程”,追踪发现7163的进程中16298的线程占用较高,使用命令:
top -Hbp 7163 | awk '/java/ && $9>50'
显示结果:

2.2、将16298的线程ID转换为16进制的线程ID。
printf "%x\n" 16298
3faa
2.3、通过jvm的jstack查看进程信息,发现是调用数据库的问题。
jstack 7163 | grep "3faa" -A 30
显示结果:

2.4、既然是数据库的问题就检查数据库,思路是先打印了所有在跑的数据库线程,检查后发现跟进情况找到问题表:
2.4.1、打印mysql现有进程信息,并把信息生成log文件,使用的命令如下:
mysql -uroot -p -e "show full processlist" > mysql_full_process.log
2.4.2、过滤log文件,发现查询最多的表,使用的命令如下:
grep Query mysql_full_process.log
2.4.3、确认表中数据量,发现表中已经有将近300万条数据,判断问题是查询时间过长导致的,使用的命令如下:
use databases_name;
select count(1) from table_name;
2.4.4、确认表是否有索引,发现表未创建索引;
show create table table_name\G
三、确认及处理问题:
询问了研发表的数据是否重要,确认不重要,检查字段有时间字段,根据时间确认只留一个月的数据,操作如下:
3.1、清理数据只保留一个月的数据,清理后数据只剩下4000多,使用命令如下;
delete from table_name where xxxx_time < '2019-07-01 00:00:00' or xxxx_time is null;
3.2、由于表未加索引,所以给表创建索引,使用命令如下:
alter table table_name add index (device_uuid);
3.3、检查索引是否创建,已经有device_uuid的索引。
show create table table_name;
四、结果:
处理后进程的CPU占用到了40%,本次排查主要用到了jvm进程查看及dump进程详细信息的操作,确认是由数据库问题导致的原因,并对数据库进行了清理并创建了索引。
五、其他:
在处理问题后,又查询了一下数据库相关问题的优化,有方案说在mysql配置文件中添加innodb_buffer_pool_size参数也可以优化查询查询时间,但该参数的意义把数据放到内存了,也就是说如果数据更新了,还会导致buffer失效,通常的优化方法还是添加索引。该方法添加参数具体如下:
innodb_buffer_pool_size=4G
注:本文转自https://blog.51cto.com/rongshu/2426712
mc java 连接超时_Java进程CPU占用高导致的网页请求超时的故障排查相关推荐
- Java进程CPU占用高导致的网页请求超时的故障排查
作者:荣书 来源:https://blog.51cto.com/rongshu/2426712 一.发现问题的系统检查: 一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查load a ...
- java 进程 cpu占用_JAVA进程CPU占用高的故障排查 – 运维那些事
问题分析: 1.程序属于CPU密集型,和开发沟通过,排除此类情况. 2.程序代码有问题,出现死循环,可能性极大. 解决过程: 1.根据top命令,发现PID为2633的Java进程占用CPU高达300 ...
- java进程CPU占用高如何排查-案例二
近期项目新版本上线遇到cpu冲高现象,依据之前的经验,把这次排查过程记录下. 这次排查参考了之前记录的经验,还是很有用的:java进程cpu占用高如何排查_停5s的博客-CSDN博客_java进程cp ...
- java进程cpu占用高如何排查
问题: 公司参加HW期间,项目两台双活的jboss服务器频繁触发cpu利用率过高告警,cpu利用率长时间在90%以上. 排查思路: 第一步:在两台Linux服务器上,执行top命令,并按大写P以cpu ...
- oracle rdbms 占CPU,求助,数据库某个进程cpu占用高
客户管理员反映数据库cpu占用占用,查看后发现有个进程cpu占用特别高,有一条sql似乎进入了死循环,hanganalyzis分析文件: Trace file /oracle/diag/rdbms/o ...
- 使用dlv分析golang进程cpu占用高问题
c++通过dbg分析内存和cpu,可能大家都会.本篇主要分析通过delve分析golang程序cpu占用高的问题. delve是golang推荐的专门go语言调试工具,用来替代gdb.golang组织 ...
- java.exe占用cpu高_Java进程cpu占用过高问题解决
cpu是时分(time division)的,操作系统里有很多线程,每个线程的运行时间由cpu决定,cpu会分给每个线程一个时间片,时间片是一个很短的时间长度,如果在时间片内,线程一直占有,则是100 ...
- Windows10 LTSC 2021 开机 wsappx进程 CPU占用高
1. 修改输入法兼容性 失败 右键语言栏,选择设置,选择常规,选择使用以前版本的微软拼音输入法 2. 安装兼容库 VClib 失败 管理员模式运行powershell,Add-AppxPackage ...
- java cpu高_Java中的CPU占用高和内存占用高的问题排查
下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例 ...
最新文章
- python 手动读取cifar10_Python搞定Excel,秒解决!大大提高工作效率
- ajax headers 参数有什么用_动态爬虫(ajax)-爬取bilibili热门视频信息
- SWISHMAX2脚本整理及Swishmax使用技巧
- addroutes没添加进去_CAD中如何绘制函数曲线及添加数学公式
- HTTP中的POST、GET区别
- React Native 生成 released apk图片不显示
- C++test对多变参数的函数打桩处理技巧
- 多投资机构点评神州信息2019业绩:看好金融信创,给出增持评级!
- 卸载pip包并卸载其依赖包
- 批处理清空文件夹内所有txt文件的内容
- Pr入门系列之十一:基本图形(上)
- java-net-php-python-springboot羽毛球场地管理系统演示录像计算机毕业设计程序
- 1997年世界编程大赛一等奖作品(分享)
- 原来,嵌入式BI方案的核心差异在这,教你如何评估
- RFID技术应用及其发展趋势分析
- Android的.9图片使用问题
- 爬虫遇到验证码必须要知道的解决办法(干货)
- 微信公众平台如何操作迁移?迁移公证步骤是什么?
- 同样line-height下ios和Android显示不一致的问题
- 北理889考研经验帖