一、发现问题的系统检查:

一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查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占用高导致的网页请求超时的故障排查相关推荐

  1. Java进程CPU占用高导致的网页请求超时的故障排查

    作者:荣书 来源:https://blog.51cto.com/rongshu/2426712 一.发现问题的系统检查: 一个管理平台门户网页进统计页面提示请求超时,随进服务器操作系统检查load a ...

  2. java 进程 cpu占用_JAVA进程CPU占用高的故障排查 – 运维那些事

    问题分析: 1.程序属于CPU密集型,和开发沟通过,排除此类情况. 2.程序代码有问题,出现死循环,可能性极大. 解决过程: 1.根据top命令,发现PID为2633的Java进程占用CPU高达300 ...

  3. java进程CPU占用高如何排查-案例二

    近期项目新版本上线遇到cpu冲高现象,依据之前的经验,把这次排查过程记录下. 这次排查参考了之前记录的经验,还是很有用的:java进程cpu占用高如何排查_停5s的博客-CSDN博客_java进程cp ...

  4. java进程cpu占用高如何排查

    问题: 公司参加HW期间,项目两台双活的jboss服务器频繁触发cpu利用率过高告警,cpu利用率长时间在90%以上. 排查思路: 第一步:在两台Linux服务器上,执行top命令,并按大写P以cpu ...

  5. oracle rdbms 占CPU,求助,数据库某个进程cpu占用高

    客户管理员反映数据库cpu占用占用,查看后发现有个进程cpu占用特别高,有一条sql似乎进入了死循环,hanganalyzis分析文件: Trace file /oracle/diag/rdbms/o ...

  6. 使用dlv分析golang进程cpu占用高问题

    c++通过dbg分析内存和cpu,可能大家都会.本篇主要分析通过delve分析golang程序cpu占用高的问题. delve是golang推荐的专门go语言调试工具,用来替代gdb.golang组织 ...

  7. java.exe占用cpu高_Java进程cpu占用过高问题解决

    cpu是时分(time division)的,操作系统里有很多线程,每个线程的运行时间由cpu决定,cpu会分给每个线程一个时间片,时间片是一个很短的时间长度,如果在时间片内,线程一直占有,则是100 ...

  8. Windows10 LTSC 2021 开机 wsappx进程 CPU占用高

    1. 修改输入法兼容性 失败 右键语言栏,选择设置,选择常规,选择使用以前版本的微软拼音输入法 2. 安装兼容库 VClib 失败 管理员模式运行powershell,Add-AppxPackage ...

  9. java cpu高_Java中的CPU占用高和内存占用高的问题排查

    下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例 ...

最新文章

  1. python 手动读取cifar10_Python搞定Excel,秒解决!大大提高工作效率
  2. ajax headers 参数有什么用_动态爬虫(ajax)-爬取bilibili热门视频信息
  3. SWISHMAX2脚本整理及Swishmax使用技巧
  4. addroutes没添加进去_CAD中如何绘制函数曲线及添加数学公式
  5. HTTP中的POST、GET区别
  6. React Native 生成 released apk图片不显示
  7. C++test对多变参数的函数打桩处理技巧
  8. 多投资机构点评神州信息2019业绩:看好金融信创,给出增持评级!
  9. 卸载pip包并卸载其依赖包
  10. 批处理清空文件夹内所有txt文件的内容
  11. Pr入门系列之十一:基本图形(上)
  12. java-net-php-python-springboot羽毛球场地管理系统演示录像计算机毕业设计程序
  13. 1997年世界编程大赛一等奖作品(分享)
  14. 原来,嵌入式BI方案的核心差异在这,教你如何评估
  15. RFID技术应用及其发展趋势分析
  16. Android的.9图片使用问题
  17. 爬虫遇到验证码必须要知道的解决办法(干货)
  18. 微信公众平台如何操作迁移?迁移公证步骤是什么?
  19. 同样line-height下ios和Android显示不一致的问题
  20. 北理889考研经验帖

热门文章

  1. [物理学与PDEs]第5章习题6 各向同性材料时强椭圆性条件的等价条件
  2. Bailian2720 大象喝水【模拟】
  3. Bailian2693 最远距离【序列处理】
  4. NUC1399 Sum It Up【DFS】
  5. UVALive2245 POJ1131 HDU1376 ZOJ1086 Octal Fractions【进制】
  6. Binary GCD algorithm
  7. SELinux 初探
  8. WinEdt LaTex(三)—— 宏包
  9. Linux sudo一些命令出现 command not found 的原因
  10. 3升5升得4升——倒水问题的万能解法(扩展欧几里得算法)