Linux学习 当前位置:首页 > 计算机学习 > 操作系统 > Linux学习>正文

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

【Linux学习】 2020-01-10本文已影响

另一方面,发现问题的系统检查:一个管理平台的入口页进入统计页,通知请求超时,进入服务器的操作系统,检查load average是否超过4个负载,PID为7163 Java进程CPU占用高导致的网页请求超时的故障排查8HW秒教学习网-学习教育资源分享平台

二、定位故障根据这种故障的一般处理构想,首先找到问题进程内CPU占有率高的线程,从线程的堆栈信息中找到该线程当时正在执行的问题代码段,进行如下操作8HW秒教学习网-学习教育资源分享平台

2.1、根据想法看到高占有率的“过程中”占有率的“线程”,7163的过程中追踪16298占有率高,使用指令8HW秒教学习网-学习教育资源分享平台

top-hbp7163|awk'/java/&$9>50 '结果:将Java进程CPU占用高导致的网页请求超时的故障排查2.2和16298线程ID转换为十六进制线程ID。8HW秒教学习网-学习教育资源分享平台

printf "%x\n" 162983faa2.3,通过jvm的jstack查看进程信息并发现调用数据库的问题。8HW秒教学习网-学习教育资源分享平台

jstack 7163 | grep "3faa" -A 30显示了结果: Java进程CPU占用高导致的网页请求超时的故障排查2.4,由于数据库存在问题,我们考虑检查数据库,打印所有先前的数据库线程,并在检查后发现跟进情况,然后找到问题表8HW秒教学习网-学习教育资源分享平台

2.4.1、要打印mysql的现有进程信息并在log文件中生成信息,请使用以下命令8HW秒教学习网-学习教育资源分享平台

MySQL-uroot-p-e " showfullprocesslist " > MySQL _ full _ process.log2.4. 2,筛选日志文件,找到查询最多的表,然后使用以下命令8HW秒教学习网-学习教育资源分享平台

grepquerymysql _ full _ process.log2.4. 3确认表中的数据量后,可知表中已经有约300万件数据,判断问题是由于查询时间过长,使用的命令如下8HW秒教学习网-学习教育资源分享平台

use databases_name; select count(1) from table_name; 2.4.4、检查表中是否有索引,并发现表中没有创建索引8HW秒教学习网-学习教育资源分享平台

show create table _ name\g,研发表的数据是否重要,是否不重要,检查字段是否有时间字段,根据时间确认是否只剩下一个月的数据,操作如下8HW秒教学习网-学习教育资源分享平台

3.1、整理数据的只有一个月的数据,整理的数据只剩下4000多人。 使用命令如下8HW秒教学习网-学习教育资源分享平台

deletefromtable _ name where xxxx _ time8HW秒教学习网-学习教育资源分享平台

altertabletable _ nameaddindex ( device_uuid )3. 3,检查是否创建了索引,并且device _ uuid的索引已经存在。8HW秒教学习网-学习教育资源分享平台

show create table table_name; 四、结果处理后工艺的CPU占40%。 本次故障诊断主要用于jvm进程查看dump进程的详细信息,确认是由数据库问题引起的,并清理数据库以创建索引。8HW秒教学习网-学习教育资源分享平台

五、其他:处理问题后,调查了数据库相关问题的优化。 虽然已经建议通过将innodb_buffer_pool_size参数添加到mysql配置文件来优化查询时间,但是该参数的含义可以是将数据存储在存储器中,即,如果数据被更新,则buffer可能无效。 通常的优化方法是添加索引。 此方法添加innodb_buffer_pool_size=4G参数8HW秒教学习网-学习教育资源分享平台

8HW秒教学习网-学习教育资源分享平台

本站所有资源均来自于秒教学习网蜘蛛爬取结果,如您发现侵权、违法、存在不和谐内容,告知本站一律删除

本站不以盈利为目的,全站资源仅供学习爱好使用。本站站长邮箱:3569622@qq.com

备案号:

©秒教学习网  2016-2019版权所有     站点地图

回到顶部