java应用线上CPU过高问题排查

1、top 命令,查看占用CPU最高的PID。
ps aux|grep PID 进一步确定tomcat进程出现问题。
2、ps -mp pid -o THREAD,tid,time
显示线程列表
3、printf "%x\n" tid 线程ID转换为16进制格式。
4、jstack pid | grep tid -A 30 打印线程的堆栈信息
5、pstack 查看某个进程的当前线程栈运行情况

时间: 2024-10-18 09:03:13

java应用线上CPU过高问题排查的相关文章

Java应用线上问题排查的常用工具和方法

在长期排查线上问题的过程中,总结了一些工具的用法和排查问题的思路,这里跟大家分享一下,在遇到类似的问题时,希望能给予一些帮助. 首先讲讲工具, jvm 自带的一些工具是必须熟练掌握的,例如jstack, jmap, jstat等,它们可以帮我们去深入了解JVM正在做的事情,主要的适用领域有这些: 1.jstack jstack可以告诉你当前所有JVM线程正在做什么,包括用户线程和虚拟机线程,你可以用它来查看线程栈,并且结合Lock信息来检测是否发生了死锁和死锁的线程. 没事儿jstack一下,知

STORM在线业务实践-集群空闲CPU飙高问题排查

源:http://daiwa.ninja/index.php/2015/07/18/storm-cpu-overload/ 2015-07-18AUTHORDAIWA STORM在线业务实践-集群空闲CPU飙高问题排查有2条评论 STORM在线业务实践-集群空闲CPU飙高问题排查 最近将公司的在线业务迁移到Storm集群上,上线后遇到低峰期CPU耗费严重的情况.在解决问题的过程中深入了解了storm的内部实现原理,并且解决了一个storm0.9-0.10版本一直存在的严重bug,目前代码已经合并

STORM在线业务实践-集群空闲CPU飙高问题排查(转)

最近将公司的在线业务迁移到Storm集群上,上线后遇到低峰期CPU耗费严重的情况.在解决问题的过程中深入了解了storm的内部实现原理,并且解决了一个storm0.9-0.10版本一直存在的严重bug,目前代码已经合并到了storm新版本中,在这篇文章里会介绍这个问题出现的场景.分析思路.解决的方式和一些个人的收获. 背景 首先简单介绍一下Storm,熟悉的同学可以直接跳过这段. Storm是Twitter开源的一个大数据处理框架,专注于流式数据的处理.Storm通过创建拓扑结构(Topolog

Filebeat占用内存和CPU过高问题排查

经反馈,新部署的服务器上filebeat占用的cpu过高,且内存只增不减. 而据我了解filebeat非常轻量级,正常情况下占用的资源几乎都能忽略不计,所以怀疑是filebeat本身出了问题. 第一时间查看filebeat日志(默认路径/var/log/filebeat/filebeat),发现有大量内容输出: 2019-03-20T08:55:02.198+0800 INFO kafka/log.go:53 producer/broker/544 starting up 2019-03-20T

CPU飚高问题排查基本步骤

CPU 飚高 一般是死循环或者死锁问题导致. 1. 通过 top  命令找到 CPU 消耗最高的进程,并记住进程 ID {pid}.top -M -n 2 -d 3 >{pid}/top.txt 查看top 2. 再次通过 top -Hp  {pid} 找到 CPU 消耗最高的线程 ID,并记住线程 ID(十进制). 3.通过 JDK 提供的 jstack 工具 dump 线程堆栈信息到指定文件中.jstack {pid} >{pid}/jstack_1.txt 一次堆栈快照 备用 jstac

jstack定位线上CPU过高问题

top  查看占用资源最高进程的PID jstack -l  pid  >  statck.log   输出线程堆栈信息 top -H -p pid   找出相对应的线程TID printf "%x \n" <tid>  输出十六进制 less  statck.log  查看日志文件,找到线程16进制关键字,上下翻页查看与代码相关的信息,定位代码问题 原文地址:https://www.cnblogs.com/byfboke/p/12681632.html

微服务应用线上性能分析

每天线程数在16:12增加,后通过jmx监控程序为,微服务业务线程增加,因为多个业务几乎每个业务统一时间16:12线程数 增加后,tp99狂飙1000倍,在系统工程师支持下查到为线上16:12执行磁盘清理文件,停止后系统线程数正常,tp99正常. 其中的一个应用平时线程数也会超过400个平时为80/90后观察到和fullgc强相关,后续需要调整gc算法避免暂停时间 过长导致线程数增加. 总结应用请求数越多,外部比如fullgc.外部程序执行比如清理磁盘程序对程序的影响越大,这时候需要尽量避免在业

JVM 线上故障排查基本操作--CPU飙高

JVM 线上故障排查基本操作 CPU 飚高 线上 CPU 飚高问题大家应该都遇到过,那么如何定位问题呢? 思路:首先找到 CPU 飚高的那个 Java 进程,因为你的服务器会有多个 JVM 进程.然后找到那个进程中的 “问题线程”,最后根据线程堆栈信息找到问题代码.最后对代码进行排查. 如何操作呢? 通过 top 命令找到 CPU 消耗最高的进程,并记住进程 ID. 再次通过 top -Hp [进程 ID] 找到 CPU 消耗最高的线程 ID,并记住线程 ID. 通过 JDK 提供的 jstac

java程序启动时cpu和负载高探索

这两天协助运维定位1个监控程序CPU占用率达到150%的问题,过程曲折,结论简单,很有意思:) 首先我们来看一下cpu高时候截图: 可以看到红色框中的监控程序CPU占用率都很高,但其实这些监控程序的实现很简单:发送1个http请求,收到响应后简单判断一下响应码,然后打印监控结果,打印完成就退出了.每次监控都会重新由daemon程序拉起运行. 这么简单的业务占用这么高的cpu,怎么感觉都不太可能,于是拿到监控程序的源码开始定位. 第一个想到的是VisualVm.JConsole等工具,但由于程序很