Java进程CPU高负载排查步骤

这篇具有很好参考价值的文章主要介绍了Java进程CPU高负载排查步骤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

近期发现服务器Java进程负载,超过100%

一、采用top命令定位进程

登录服务器,执行top命令,查看CPU占用情况,找到进程的pid

java进程cpu使用率高排查,Linux,linux,运维,Powered by 金山文档

很容易发现,PID为29706的java进程的CPU飙升到700%多,且一直降不下来,很显然出现了问题。

二、使用top -Hp命令定位线程

使用 top -Hp <pid> 命令(为Java进程的id号)查看该Java进程内所有线程的资源占用情况

top -Hp 29706
java进程cpu使用率高排查,Linux,linux,运维,Powered by 金山文档

很容易发现,多个线程的CPU占用达到了90%多。我们挑选线程号为30309的线程继续分析。

三、使用jstack命令定位代码

1.线程号转换为16进制

printf “%x\n” 命令(tid指线程的id号)将以上10进制的线程号转换为16进制:

printf "%x\n"  30309
java进程cpu使用率高排查,Linux,linux,运维,Powered by 金山文档

转换后的结果分别为7665,由于导出的线程快照中线程的nid是16进制的,而16进制以0x开头,所以对应的16进制的线程号nid为0x7665

2.采用jstack命令导出线程快照

通过使用dk自带命令jstack获取该java进程的线程快照并输入到文件中: jstack -l > ./jstack_result.txt 命令(为Java进程的id号)来获取线程快照结果并输入到指定文件。

jstack -l 29706 > ./jstack_result.txt

3.根据线程号定位具体代码

在jstack_result.txt 文件中根据线程好nid搜索对应的线程描述

cat jstack_result.txt |grep -A 100  7665
java进程cpu使用率高排查,Linux,linux,运维,Powered by 金山文档

根据搜索结果,判断应该是ImageConverter.run()方法中的代码出现问题

也可以直接采用jstack <pid> |grep -A 200 <nid>来定位具体代码

jstack 29706 |grep -A 200 7665

"System Clock" #28 daemon prio=5 os_prio=0 tid=0x00007efc19e8e800 nid=0xae24 waiting on condition [0x00007efbe0d91000]

java.lang.Thread.State: TIMED_WAITING (sleeping)

at java.lang.Thread.sleep(Native Method)

at java.lang.Thread.sleep(Thread.java:340)

at java.util.concurrentC.TimeUnit.sleep(TimeUnit.java:386)

at com.*.order.Controller.OrderController.detail(OrderController.java:37) //业务代码阻塞点

4.总结

CPU飙升问题定位的一般步骤是:

1.首先通过top指令查看当前占用CPU较高的进程PID;

2.查看当前进程消耗资源的线程PID: top -Hp PID

3.通过print命令将线程PID转为16进制,根据该16进制值去打印的堆栈日志内查询,查看该线程所驻留的方法位置。

4.通过jstack命令,查看栈信息,定位到线程对应的具体代码。

5.分析代码解决问题。文章来源地址https://www.toymoban.com/news/detail-629698.html

到了这里,关于Java进程CPU高负载排查步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java线上服务CPU、内存飙升问题排查步骤!

    作为一名从事Java开发快一年的程序员,在线上经常碰到 某个模块的Pod发出CPU与内存告警的问题 ,而这些问题会导致系统响应缓慢甚至是服务不可用。一般情况下可以通过 重启 或者 调高Pod的资源量或者增加Pod数量 暂时解决问题,但这是治标不治本的,只有找到问题发生的原

    2024年02月16日
    浏览(47)
  • Java线上CPU内存冲高问题排查步骤

    作为一名从事Java开发快一年的程序员,在线上经常碰到 某个模块的Pod发出CPU与内存告警的问题 ,而这些问题会导致系统响应缓慢甚至是服务不可用。一般情况下可以通过 重启 或者 调高Pod的资源量或者增加Pod数量 暂时解决问题,但这是治标不治本的,只有找到问题发生的原

    2024年02月07日
    浏览(46)
  • Java CPU或内存使用率过高问题定位教程

    Spring cloud微服务广泛应用后,服务的监控和运维压力也与日俱增,经常有服务出现CPU或者内存使用率过高的告警,那么遇到这样的问题我们该如何排查呢?我们可以借助哪些工具来定位问题呢?本文将介绍一下遇到此类问题的解决思路和方法。 1.通过应用日志定位思路 对于业

    2024年03月28日
    浏览(58)
  • java获取系统CPU和内存使用率的三种方法

    获取系统CPU和内存的三种方法: 1、使用OperatingSystemMXBean获取 2、使用sigar方法获取 3、使用oshi方法获取 以下是我在我的机子上对三种方法测试的比较 方法    准确率 OperatingSystemMXBean    获取的内存数据准确,CPU差距有点大 sigar    获取的内存数据稍微有点差距,CPU相对

    2024年04月13日
    浏览(49)
  • linux top命令中 cpu 利用率/mem 使用率与load average平均负载计算方式

    top 命令是 Linux 上一个常用的系统监控工具,它经常用来监控 Linux 的系统状态,是常用的性能分析工具,能够显示较全的系统资源信息,包括系统负载,CPU 利用分布情况,内存使用,进程资源占用情况等。 如下示例: 这里主要看进程的 CPU%, MEM% 和 load averge 字段。 该字段指

    2024年02月03日
    浏览(53)
  • java 应用cpu飙升(超过100%)故障排查

    害。。。 昨天刚写完一份关于jvm问题排查相关的博客,今天线上项目就遇到了一个突发问题。 现象是用户反映系统非常卡,无法操作。 然后登录服务器查看发现cpu 一直100%以上。 发现线上pid 29737的 java应用cpu达到100% 输入上述命令,然后按H显示cpu最高排名的线程。可以看到

    2023年04月26日
    浏览(57)
  • java 程序cpu占用过高排查

    取得cpu占用最高的PID: 27791 方式一 cgroup 如果输出中包含有类似 /docker/container_id 的字符串,就表示该进程在 Docker 容器中。 方式二 lsns   lsns命令查看程序的命名空间  ,如果显示的命名空间信息中有 ipc , mnt , net , pid , user , uts ,那么该 PID 很可能在一个 Docker 容器中。 方式三

    2024年02月07日
    浏览(51)
  • cpu load与cpu使用率与线程的5种状态

    cpu load值是正在运行和就绪等待状态线程数之和。 load越大,说明线程竞争时间片越激烈,线程等待队列越长。 对于8核系统,如果load为10,说明8个线程正在执行,2个线程等待时间片。 cpu利用率 load越大,cpu使用率越高吗? 不一定,如果线程是执行IO这种,线程拿到时间片后

    2024年02月01日
    浏览(52)
  • Java应用CPU占用过高问题排查

    测试环境CPU突然升高,日志查询无异常,可以通过使用jvm的调试工具定位问题。 1.定位java服务进程 2.定位java线程 3.定位代码块 1.定位进程 获取cpu占用高的进程pid 2.定位线程 转16进制 3.定位代码 目的:将当前堆栈信息保存为文件,通过16进制的TID查找问题所在的代码块;

    2024年02月12日
    浏览(44)
  • 【Java】 服务器cpu过高如何排查和解决?

    对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升时),按照本文的步骤排查,基本1分钟即可搞定!特此整理排查方法一篇,供大家参考讨论提高。 线上系统突然运行缓慢,CPU飙升,甚至到100%,以及Full GC次数过多,接着就是各种报警:例如接口

    2024年02月11日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包