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

时间: 2024-10-11 04:18:00

jstack定位线上CPU过高问题的相关文章

微服务中定位线上问题

微服务架构下的程序一般有多个节点提供服务,用户请求不一定落在哪一个节点,如果节点 存在问题,一般利用日志监控系统来确认问题. 日志监控系统提供实时日志,以及全文检索日志,并且日志实时查询以及全文检索查询都要 以倒叙查询. 中间件系统或业务系统对于日志生成的级别,debug.info.error等级别,以及error日志 要打印详细日志栈信息. 通过合理详细的使用日志以及配合日志监控系统的实时日志以及日志检索功能一般能够很快地 定位问题,定位到问题一般就能很快地解决. 错误日志尽量打印栈信息,in

不改一行代码定位线上性能问题

背景最近时运不佳,几乎天天被线上问题骚扰.前几天刚解决了一个 HashSet 的并发问题,周一又来了一个性能问题. 大致的现象是:我们提供出去的一个 OpenAPI 反应时快时慢,快的时候几十毫秒,慢的时候几秒钟才响应. 尝试解决由于这种也不是业务问题,不能直接定位.所以尝试在测试环境复现,但遗憾的测试环境贼快. 没办法只能硬着头皮上了. 中途有抱着侥幸心里让运维查看了 Nginx 里 OpenAPI 的响应时间,想把锅扔给网络.结果果然打脸了:Nginx 里的日志也表明确实响应时间确实有问题.

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 查看某个进程的当前线程栈运行情况

利用Arthas定位线上问题实例

前言 Arthas是一个类似于Btrace的JVM在线调试分析工具,具体可参考我之前写的一篇博客:利用JVM在线调试工具排查线上问题.本文分享笔者刚遇到的一个问题,虽然不复杂,但是很典型. 问题与分析过程 昨天上线遇到一个问题,交易后给大数据平台异步送数,但是他们说没收到数据,因为我们没有打日志,所以没有直接的证据证明是他们的问题而不是我们的问题. 送数的原理大致如下,就是交易主线程把数据放到队列里,然后异步线程从队列里把数据取出来,发送到后台. 队列: BlockingQueue<Messag

阿里问题定位神器 Arthas 的骚操作,定位线上BUG,超给力

背景公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用. 最近在优化接口的响应时间,优化了代码之后,但是时间还是达不到要求:有一个诡异的100ms左右的耗时问题,在接口中打印了请求处理时间后,和调用方的响应时间还有差了100ms左右.比如程序里记录150ms,但是调用方等待时间却为250ms左右. 下面记录下当时详细的定位&解决流程(其实解决很简单,关键在于怎么定位并找到解决问题的方法) 定位过程分析代码渠道系统是一个常见的spr

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

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

JVM探秘:线上CPU占用过高故障排查

线上系统突然变得卡顿或无法访问,排除网络异常的情况下,检查服务器资源占用情况,如果CPU.内存.磁盘IO等资源占用过高,就会导致无法继续处理HTTP请求. 如果是CPU占用飙高,有可能是程序中存在死循环.死锁导致的,也有可能是内存紧张从而频繁GC导致的,要具体问题具体分析. 排查过程 这里记录一次线上CPU占用过高的故障排查过程,重点会用到jstack命令. top命令 首先,使用top命令查看服务器资源使用情况,找到CPU占用过高的进程. 发现pid为29167的Java进程CPU占用很高,已

jstack命令定位java程序CPU利用率高的代码位置

高手是怎么使用jstack精确找到异常代码的(java程序CPU利用率高的情况) 请jstack神器来帮忙 本文介绍Linux环境下使用jstack定位问题的秘笈s1.[top命令]找到CPU利用率持续比较高的进程,获取[进程号],此处PID为 1289112891 s2.[ps p 12891 -L -o pcpu,pid,tid,time,tname,cmd 命令]找到上述进程中,CPU利用率比较高的[线程号TID](十进制数),此处为 12946ps p 12891 -L -o pcpu,

[转帖]Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践

Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践 https://www.jianshu.com/p/d4e31301ba2e 一.问题描述 Linux服务器的配置是4核16G,将war包部署到tomcat后,启动tomcat,发现内存占用率不高,但是CPU一直高达100%:浏览器输入相关url也无法访问该项目,且tomcat的进程一直存在,程序的配置什么的都没问题啊,一头雾水......通过top命令查看服务器的性能状况如下: [[email prote