top结合jstack处理线上cpu飙升问题
java程序线上运行时,出现cpu过高的情况如何进行定位呢?
记得刚参加工作的时候,老同事留下的一个项目,出现了cpu100%的情况,后来检查代码发现,之前的同事在写这块的时候,没有考录到多线程并发的问题,有个定时器偶发的多线程情况下同时写入同一个hashmap,导致cpu爆表
我们写一个小demo进行演示
首先准备一段java示例代码:
public class Test{public static void main(String args[]){Thread thread = new Thread(new Runnable() {@Overridepublic void run() {int i = 0;while (true){System.out.println(i++);try {Thread.sleep(10);} catch (InterruptedException e) {e.printStackTrace();}}}});thread.setName("mytest");thread.start();
}
新启了一个线程,每10毫秒输出自增的数,在1c1g的机器上已经能体现出来消耗了
准备好Test.java文件,
使用javac Test.java命令编译java代码;
使用nohup java Test &启动java进程;
使用tail -f nohup.out已经能看到程序的输出了
我们可以去定位这个耗费资源比较大的线程了;
首先使用top -H命令
持续观察可以看到3624这个线程一直处在占用cpu的状态,这里时间间隔10ms负载并不大,所以占用的不多,不过已经可以展示了
使用jps命令查看当前系统中运行的java进程
使用printf %x 3624 获取3624这个线程的16进制数,因为java的线程id都是使用十六进制数表示的
获得了e28这个id
下来使用jstack 3614打印jvm的堆栈信息
由于程序比较简单,打印出来的内容就这么多,我们在堆栈信息中找到e28这个线程对应的信息,
可以看到,这个线程整处于sleep状态,
这样我们就能找对问题的地方,去排查问题了
top结合jstack处理线上cpu飙升问题相关推荐
- 如何快速处理线上故障【转】
概述 线上故障通常是指大规模的影响线上服务可用性的问题或者事件,通俗点讲就是:掉'坑'里了,这个'坑'就是线上故障!线上故障的处理过程可以形象地表达为:'踩坑'.'跳坑'.'填坑'.'避坑'. 线上故 ...
- 如何快速处理线上故障
#概述 线上故障通常是指大规模的影响线上服务可用性的问题或者事件,通俗点讲就是:掉'坑'里了,这个'坑'就是线上故障!线上故障的处理过程可以形象地表达为:'踩坑'.'跳坑'.'填坑'.'避坑'. 线上 ...
- 记一次线上cpu飙升100%的排查过程
大家好,我是烤鸭: 最近没怎么写技术文章,还是得回归下初心,正好前几天出现个线上问题,记录下排查过程. 问题描述 某个时间点,接收到接口响应慢报警. 过一会收到服务器cpu可用率低(<10%)报 ...
- 线上cpu飙升解决方案
1.top 定位哪个进程占用cpu最高 #查看当前占用资源最多的进程 $ topPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND40 root ...
- Java线上CPU内存冲高问题排查步骤
1 引言 作为一名从事Java开发快一年的程序员,在线上经常碰到某个模块的Pod发出CPU与内存告警的问题,而这些问题会导致系统响应缓慢甚至是服务不可用.一般情况下可以通过重启或者调高Pod的资源量或 ...
- 线上频繁发生Full GC 如何调优?如何快速定位OOM、cpu飙升、线程死锁等问题
文章目录 1. jvm调优命令.工具介绍 ①:jps ②:jmap 查看应用中各实例生成情况 快速定位内存突然飙升导致的OOM异常 查看堆内存使用情况 ③:Jstack 检测线程死锁 快速定位导致cp ...
- 线上服务导致cpu飙升问题排查
一.故障说明 昨晚突然收到线上服务器cpu报警,登录监控平台看了下发现cpu瞬间飙升到60%.第一反应就是使用top命令去查看,发现是一个java进程.于是立刻使用jps -l命令定位到该java进程 ...
- cpu飙升 死循环_记一次CPU飙升BUG
一.前言 上线后,CPU飙升到100%,怎么办?马上重启?大错特错,马上重启只会让这个雷石沉大海,治标不不治本,等待你的下次的历史重演! 二.现象 监控告警,某机器的CPU飙升到100% 三.分析 第 ...
- 记一次CPU飙升的问题分析解决思路(转)
一.前言 上线后,CPU飙升到100%,怎么办?马上重启?大错特错,马上重启只会让这个雷石沉大海,治标不不治本,等待你的下次的历史重演! 二.现象 监控告警,某机器的CPU飙升到100% 三.分析 第 ...
最新文章
- linux系统负载检查方法
- 多花5美元提速500%,树莓派新品Zero 2 W发布
- android udp 收发例子_网络协议之TCP和UDP
- C++图解前缀树(字典树)
- 纪中A组模拟赛总结(2021.7.13)
- HATEOAS的RESTful服务。 超媒体:REST的秘密要素
- 由 go orm 引发的探索
- java 错误无法启动_1069 错误(由于登录失败而无法启动服务)解决方法
- WPF版的权限管理系统
- 计算机辅助设计cad实训总结,CAD画图的心得体会
- 深度学习mindspore --- rescale(rescale, shift)
- windows 弹shell_10个简洁实用的Windows装机必备软件
- Pug 介绍和在 Vue 中使用
- mc java送win10_微软针对Windows 10的免费Minecraft赠品在Java播放器的午夜结束
- 云服务器如何重新装系统,云服务器可以重新安装系统
- 大象 ThinkingUML
- 百度地图离线API2.0(含示例,可完全断网访问)
- python枚举窗口句柄_如何使用 WIN32 API 枚举窗口?
- 防止你的WP7手机偷跑流量——系统设置篇
- GeekPwn 2022开启全球招募,召集顶尖极客参赛挑战
热门文章
- 初次安装Linux(Ubuntu)(ssh,ftp服务安装)
- VMware中linux虚拟机无法全屏显示的解决方法(1080P分辨率调节)
- git冲突解决方案 Intellij IDEA
- Android Studio “Project Structure”选项目录结构显示异常
- 为什么我突然在Firefox中出现“阻止加载混合的活动内容”的问题?
- 如果你正在使用CocoaPods,你的.gitignore会有什么?
- aws beanstalk mysql_AWS Beanstalk搭建WordPress站点
- 麦克纳姆轮辊子滚动速度分析
- 问答| 为何会采用倒车入库(侧方位停车)方式?
- e站app里站hosts_硬核干货区 | E站的国际站运营知识星球上线啦