如何找到 java 程序 CPU 使用率100%的原因
转载:https://user.qzone.qq.com/285483820/1
最近程序在一台机器上出现了 cpu 占用率100%的情况,而执行同一份代码的其他机器则没有问题。很让我崩溃~~
今天找到了解决方案:
先用 top 命令,找到 java 进程的 pid:
如 pid 为 1000;
再用 top -H -p 1000 命令查看在这个进程中,消耗 cpu 最多 的线程,如 1003;
最后使用 jstack 1000 > dump_file 把这个进程的堆栈信息 dump 到文件中,
打开 dump_file,找到 id 为1003的线程(要转化为16进制),就能发现是哪个方法占用了 cpu,分析自己的代码,
改正 bug!
top命令
显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等
-p 表示进程PID
-c 显示进程的绝对路径
-H 显示进程的所有线程
top -Hp pid 显示所有的线程
可以显示所有的线程
(top显示参数
VIRT 表示 Virtual Memory 虚拟内存
RES 表示 Resident Memory 驻留内存
SHR 表示 shared memory 共享内存
RES 表示 进程占用的 物理内存数,实际使用数,而非申请的内存数)
jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。
如何找到 java 程序 CPU 使用率100%的原因相关推荐
- linux cpu占用100原因查询,如何根据查询异常时间节点和连接进而确定CPU使用率100%的原因...
本文在介绍如何根据查询异常时间节点和连接进而确定CPU使用率100%的原因的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获. 排查 Linux 实例异常 CPU 使用率 100% 使 ...
- java程序CPU使用率高可能的原因
1. 前言 在Java并发编程方面,如何在多线程环境中设置合理的线程数,那我们需要了解两个概念: 计算密集型 要进行大量的计算.逻辑判断等操作,消耗CPU资源,比如计算圆周率.对视频进行高清解码等等, ...
- Java程序 CPU使用率过高怎么办?
java程序 cup使用率过高,会导致程序运行速度变慢,导致系统崩溃等 原因是多向的.跟内存泄漏,数据库等都有关 参考一些解决方案: 检查是否有死循环. 频繁的GC.或者有大量的线程. 算法太复杂或者 ...
- Java 程序 CPU 使用率过高问题定位与修复
问题现象:CPU 负载过高 我们线上的 jenkins 系统,时不时会发生 CPU 负载过高的现象. CPU 负载过高后,SRE 同学会收到电话告警. 在我们的监控系统中,可以看到,某些时候,CPU ...
- 如何查看JAVA进程CPU占用100%的原因
一.top命令查找进程号 二. ps -mp [进程号] -o THREAD,tid,time 命令打印进程的线程情况 三.printf "%x\n" [线程号] 转换有问题线程号 ...
- 记录一次生产CPU使用率100%问题排查
问题背景 四月中旬生产环境的服务器频繁爆出cpu使用率100%的警告,起初这个业务线不是我负责,也就没有深入了解问题.后边,负责这个业务线的同事离职了,这件事就落在我这边了.然后,开始长达两个月的问题 ...
- java进程cpu使用率高_什么会导致Java应用程序的CPU使用率飙升?
问题 无限循环的while会导致CPU使用率飙升吗? 经常使用Young GC会导致CPU占用率飙升吗? 具有大量线程的应用程序的CPU使用率是否较高? CPU使用率高的应用程序的线程数是多少? 处于 ...
- Linux生产环境CPU使用率100%,教你定位到具体函数
在我们项目部署上线的时候,我们是不是会经常去Linux服务器上查查服务器的CPU使用率,或者是运维经常会盯Linux的CPU使用率,发现监控报了60%的一般就会报警了,到了100%那就惨啦,做我开发的 ...
- java程序cpu突然飚高_高频面试题:Java程序占用 CPU 过高怎么排查
这个问题可以说是 Java 面试的高频面试题了,有很多面试官都喜欢问这个问题,问题可能是下面这样的.线上一台服务器 CPU 使用率100% 了,如果你碰到这样的情况,如何排查并找到问题原因? 这就是一 ...
最新文章
- 二值logit模型的适用条件_一文读懂条件Logistic回归
- 【Qt】Qt源码中涉及到的设计模式
- linux docker 限制容器可用内存
- hdu 5367(线段树+区间合并)
- boost::mpi模块all_reduce() 集合的测试
- knn人脸识别判断_测试使用K-最近邻(kNN)算法的30个问题
- LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
- python 数组写txt_python txt文件常用读写操作
- ffmpeg libx264_编程小短文:FFmpeg视频画面尺寸调整,必知必会
- 【C语言】通过原子操作实现加减乘除操作Ⅱ
- Java-Exception异常
- YVU420PackedSemiPlanar32m4ka与YUV420PackedSemiPlanar64x32Tile2m8ka
- 关于docker的日常操作(二)
- 云服务器安装 jdk
- 揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?
- 新浪微博开放平台开发-android客户端(1)
- lucas定理 与 扩展lucas定理(HDU 3037 以及 2015 ICL, Finals, Div. 1 J.Ceizenpok’s formula)
- java apdu读取社保卡_使用javax.smartcardio的用于智能卡的ISO 7816 APDU
- 使用Calendar 计算两个日期相差天数,
- C#自学42一抽象类和接口