记一次SpringBoot服务CPU过高排查

那年烟雨落申城
• 阅读 565

今天到公司后,测试报告说页面操作时报网络异常,让我排查一下。 我先去服务上使用

ps -ef | grep <服务名>

查看了一下,发现服务是存在的,然后服务调不通超时可能是服务没响应,资源不够。于是使用top命令查询

top 5705

键盘输入shift + m根据内存使用率降序排序,发现占用率10%左右,似乎没啥问题,然后输入shift + p根据CPU使用率降序排序查询如下。 记一次SpringBoot服务CPU过高排查 居然CPU高达180%,于是赶紧查看下哪个线程使用率较高

top -H -p 5705

记一次SpringBoot服务CPU过高排查 这里看到有两个线程在84%左右,大概就是这两个线程导致的。将十进制的线程编号转换为十六进制备用:

printf "0x%x\n" 5709
printf "0x%x\n" 5710

得到的结果是

0x164d
0x164e

这个时候应该导出线程信息看下,使用命令

/data/java/bin/jstack -l -F 5705 >> jstack.log

导出线程信息,然后下载文件后搜索 0x164d0x164e,发现是两个GC线程 记一次SpringBoot服务CPU过高排查 应该是内存不够用了,于是看下内存情况,使用以下命令

/data/java/bin/jmap -dump:format=b,file=jmap.hprof 5705

导出内存快照,然后下载下来,用MAT打开 记一次SpringBoot服务CPU过高排查 查看这几个Problem,发现里面是一个线程池中的多个线程在从A数据库导数据到B数据库,一次Load1万条数据,开的线程较多,内存吃满了。内存已经吃满了肯定没法进行了,于是降低导数据同时执行的线程数,重启服务,重新导数据。

点赞
收藏
评论区
推荐文章
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。,仅限7天$20
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠AWS精美祥云纪念T恤一件。,仅限7天$20
Stella981 Stella981
3年前
Linux 服务器上有挖矿病毒 kdevtmpfsi 如何处理?
症状表现服务器CPU资源使用一直处于100%的状态,通过top命令查看,发现可疑进程kdevtmpfsi。通过google搜索,发现这是挖矿病毒。!(https://cdm.yp14.cn/img/kdevtmpfsitop.png)排查方法首先:查看kdevtmpfsi进程,使用ps
Stella981 Stella981
3年前
JVM调优之jstack找出最耗cpu的线程并定位代码
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。第一步先找出Java进程ID,服务器上的Java应用名称为mrfcenter:root@u
Stella981 Stella981
3年前
Kerberos无约束委派的攻击和防御
 0x00前言简介当ActiveDirectory首次与Windows2000Server一起发布时,Microsoft就提供了一种简单的机制来支持用户通过Kerberos对Web服务器进行身份验证并需要授权用户更新后端数据库服务器上的记录的方案。这通常被称为Kerberosdoublehopissue(双跃点问题),
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
AWS国庆双重礼,仅限7天
自2021年10月1日00:00起至2021年10月7日24:00,新注册并激活(需全部完成账号注册的五个步骤,否则账号状态并未激活)AWS海外区域账户,填写页面下方表单,即可申领价值$200美元的AWS海外区域账户服务抵扣券直充到您的账户,用以抵扣服务消费,助您轻松体验多个云迁移应用场景。同时,您还可获赠。国庆双重礼,仅限7天$200美元AWS服务抵
Stella981 Stella981
3年前
Hibernate纯sql查询结果和该sql在数据库直接查询结果不一致
问题:今天在做一个查询的时候发现一个问题,我先在数据库实现了我需要的sql,然后我在代码中代码:selectdistinctd.id,d.name,COALESCE(c.count_num,0),COALESCE(c.count_fix,0),COALESCE(c
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Java服务总在半夜挂,背后的真相竟然是... | 京东云技术团队
最近有用户反馈测试环境Java服务总在凌晨00:00左右挂掉,用户反馈Java服务没有定时任务,也没有流量突增的情况,Jvm配置也合理,莫名其妙就挂了