java程序cpu突然飚高_Java 定位导致CPU飙升的代码过程
线上的一个日志实时输出的程序曾经出过这样一个问题,刚开始上线java程序占用的CPU的资源很少,但是到了整点的时候,CPU直线飙高,直接到达100%根本没有要下降的趋势,唯一的方法只能杀掉它了,后面在借助jstack与top排查到线程然后定位到某行代码出的问题。
排查演示
使用jps找到程序的pid
[root@logs bin]# ./jps -l -m | grep logdir2
22169 galaxy-log-online-0.1-SNAPSHOT-all.jar 3002 /logdir2
找到22169进程ID
找到CPU过高的线程
top -H -p 22169
top - 19:03:22 up 156 days, 5:57, 4 users, load average: 1.00, 2.84, 4.25
Threads: 15 total, 0 running, 15 sleeping, 0 stopped, 0 zombie
%Cpu(s): 99.4 us, 12.6 sy, 0.0 ni, 62.6 id, 4.8 wa, 0.0 hi, 2.6 si, 0.0 st
KiB Mem : 8010456 total, 206760 free, 1079668 used, 6724028 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 6561460 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
22184 root 20 0 4543356 74148 12960 S 80.0 40.9 0:19.96 java
22169 root 20 0 4543356 74148 12960 S 0.0 0.9 0:00.00 java
22170 root 20 0 4543356 74148 12960 S 0.0 0.9 0:00.35 java
22171 root 20 0 4543356 74148 12960 S 0.0 0.9 0:00.08 java
22172 root 20 0 4543356 74148 12960 S 0.0 0.9 0:00.09 java
...
将线程转为16进制
[root@logs bin]# printf "%x" 22184
56a8
使用jstack定位到线程
[root@logs bin]# ./jstack 22169 | grep 56a8
"Thread-1" #9 prio=5 os_prio=0 tid=0x00007fe428230800 nid=0x56a8 waiting on condition [0x00007fe4121a5000]
使用3D肉眼来查看线程运行的代码了
"Thread-1" #9 prio=5 os_prio=0 tid=0x00007fe428230800 nid=0x56a8 waiting on condition [0x00007fe4121a5000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at java.lang.Thread.sleep(Unknown Source)
at java.util.concurrent.TimeUnit.sleep(Unknown Source)
at com.dounine.tool.http.sql.LogsRequest$4.run(LogsRequest.java:152)
at java.lang.Thread.run(Unknown Source)
然后开始从LogsRequest.java152行开始找起,发现里面有一个死循环...
FIX 它
然后开开心心下班
java程序cpu突然飚高_Java 定位导致CPU飙升的代码过程相关推荐
- Java 程序 CPU 使用率过高问题定位与修复
问题现象:CPU 负载过高 我们线上的 jenkins 系统,时不时会发生 CPU 负载过高的现象. CPU 负载过高后,SRE 同学会收到电话告警. 在我们的监控系统中,可以看到,某些时候,CPU ...
- 成都Java程序员工资多高?
大家都说Java程序员薪资高,前景好,那么成都Java程序员工资多高?今天朗妹就和大家看看工资情况. 通过上图我们可看到近一年的时间9018份样本调查,35.4%的人拿到了10-15K的月薪,平均月薪 ...
- java程序cpu突然飚高_高频面试题:Java程序占用 CPU 过高怎么排查
这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的.线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 这就是一 ...
- java cpu高_Java中的CPU占用高和内存占用高的问题排查
下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例 ...
- 简单的cpu飚高问题定位脚本
老司机在定位和解决问题时都有着自己的一套方法论,总不能老踩一些重复的坑是吧.老司机一般多少都遇到过服务器cpu飚高的问题,定位问题的方法网上文章多如牛毛,现这里再总结一下,对于混部多个Java应用的服 ...
- java cpu 占用率高_java实战CPU占用过高问题的排查及解决
最近一段时间 某台服务器上的一个应用总是隔一段时间就自己挂掉 用top看了看 从重新部署应用开始没有多长时间CPU占用上升得很快 排查步骤 1.使用top 定位到占用CPU高的进程PID top 2. ...
- java资源使用效率较高,Java 进程资源使用率较高问题定位
在实际开发过程中,有些 Java 程序在本地或者在服务器上都可以运行的较正常,但是运行较长一段时间后,可能会出现资源占用率较高的情况,例如 CPU 或 内存占用率较高等情况,以至于发生内存溢出,进程假 ...
- Java 程序员薪资这么高,取决于什么?
众多行业中,程序员当然属于高薪职业. 无论是国内还是国外,IT行业的程序员.工程师,甚至连码农都要比其他行业的从业者的收入高很多! 但是Java程序员拿多少钱跟有多少经验有关系,但经验的多少跟年限没有 ...
- linux环境CPU使用率过高问题定位
1. 找到cpu占用最高的进程id 通过top命令查看占用最高的进程id 2. 定位到对应java程序 ps -ef | grep 进程pid(或者 jps -l | grep 进程pid) 3. 定 ...
最新文章
- 检测到包降级: Microsoft.Extensions.Configuration.Abstractions 从 2.1.1 降 2.1.0
- c转义字符以及常见问题和解决方法||c中的注释
- Ffmpeg 定位文件(seek file)
- pandas:dataframe删除某些不为non的行
- 最大期望算法与混合高斯模型的推导
- influxdb 插入数据_Influx Sql系列教程五:insert 添加数据
- 【Erlang新手成长日记】Erlang开源项目推荐
- android ichartjs 曲线图,C#中利用LightningChart绘制曲线图表
- SylixOS allwinner h6 链接脚本
- 管理感悟:需要什么样的技术文档
- 帮同学的忙,随意写了个课程设计(关于循环双向列表)
- 投票群体案例介绍(36)
- AI自动还原OpenCV制作的九宫格拼图游戏(附源码)
- 山东大学人工智能导论实验四 利用神经网络分类红色和蓝色的花
- 计算机网络 第五章 课后题答案
- 12306android端接口,12306官方火车票Api接口
- 物联网毕设(基于STM32的蓝牙检测心率+步数+手机APP)
- 使用pycallgraph分析python代码函数调用流程以及框架
- 什么是马甲APP?怎么用马甲APP导流
- C++学习路线及推荐书籍