`

linux--关于JVM CPU资源占用过高的问题排查 (转)

阅读更多
摘要:总结下最近工作中问题排查方法,问题是jvm cpu占用过高

 

一、背景:

    先执行一个java程序里面开了两个线程分别都在while循环做打印操作。    

 

# java -cp ./test-threads.jar com.spiro.Main

二、现象:

    通过top命令查看当前CPU情况

    可以看到有个java进程占用CPU过高,下面来排查是什么线程的什么代码导致CPU过高。

三、步骤

    先获得PID为2023,上图可以看到,或者通过jps命令获取。 执行以下命令:   

# top -H -p2023

说明: -H 指显示线程,-p 是指定进程

    结果:


    可以看到两个CPU占用较高的线程,记下PID 2033和2034 ( 此处的PID即为线程ID标识) ,将其从十进制转成十六进制表示,可通过windows自带的计算器来转。得到结果分别为7f1和7f2

    再通过jstack命令获取当前线程栈,可暂时保存到一个文件tempfile.txt中;  

# jstack -l 2023 > tempfile.txt

在tempfile.txt中查找nid=0x7f1的线程: 

    可以看到我们找到的线程Thread-0,以及该线程的状态和正在执行的代码行,本例中显示当前正在执行Worker类的15行。然后可去代码中查看不合理的逻辑

四、总结

    该方法很有用,多次使用该方法定位出程序中的性能问题,在此分享和记录。

  • 大小: 22.1 KB
  • 大小: 19.6 KB
  • 大小: 8 KB
  • 大小: 14.4 KB
分享到:
评论

相关推荐

    show-busy-java-threads-jvm-cpu.rar

    在Java应用程序的运行过程中,有时候会遇到JVM(Java虚拟机)CPU使用率过高的问题。这通常是由于线程执行不恰当或者存在死锁、资源争抢等状况引起的。为了定位并解决这些问题,开发者需要有效地监控和分析Java线程的...

    记一次tomcat进程cpu占用过高的问题排查记录

    本文主要记录一次tomcat进程,因TCP连接过多导致CPU占用过高的问题排查记录。 问题描述 linux系统下,一个tomcat web服务的cpu占用率非常高,top显示结果超过200%。请求无法响应。反复重启依然同一个现象。 问题...

    CPU 高消耗排查

    CPU高消耗是指系统或应用程序在运行过程中占用大量的CPU资源,导致系统响应变慢甚至出现卡顿的现象。这种问题通常会影响系统的整体性能和用户体验。因此,对于运维工程师或者开发人员来说,了解如何排查和解决CPU高...

    weblogic内存占用过大调优

    这些问题可能源于多个方面,包括但不限于:系统资源分配不合理、CPU使用率异常高、文件句柄限制过低、线程状态异常以及JVM的GC(垃圾回收)机制问题等。 #### 二、诊断与监控 1. **系统资源监控**: - 使用`top`...

    JVM---jstack分析Java线程CPU占用,线程死锁的解决

    在开发和运维过程中,有时会遇到Java应用的性能问题,如线程CPU占用过高或者线程死锁。这时,我们就需要用到JVM提供的工具,如`jstack`,来帮助诊断和解决问题。 `jstack` 是JDK自带的一个命令行工具,它能够打印出...

    linux服务器应用卡死性能问题排查

    总的来说,面对Linux服务器应用的卡死或性能问题,我们需要有条不紊地运用各种工具和技巧,从CPU占用率、线程状态、堆栈信息等多个维度进行排查,这样才能高效地找出问题并进行优化。这不仅要求我们熟悉Linux和Java...

    美团JVM问题定位和排错

    然而,在实际运行过程中,由于复杂的运行环境和技术栈的多样性,JVM可能会遇到各种各样的问题,如性能瓶颈、内存泄漏、CPU占用过高、网络延迟等。这些问题不仅会影响服务的稳定性和响应速度,还可能导致严重的业务...

    对JVM调优的总结经验.docx

    1. 在线排查:可以在线排查 JVM 的问题,包括线程安全问题、OOM 问题等。 2. JVM 观察:可以观察 JVM 的运行情况,包括 CPU 占用率、内存占用率、垃圾回收的信息等。 3. 线程定位:可以定位 JVM 进程中的线程问题,...

    Java线上故障排查方案(2).pdf

    系统异常通常指的是CPU占用率过高、磁盘使用率100%、系统可用内存低等情况;而业务异常则可能包括服务运行一段时间自动退出、服务间调用时间过长、多线程并发异常、死锁等问题。在进行故障排查时,第一步便是问题的...

    线上问题调查常用命令

    - P: 按CPU占用排序。 - M: 按内存占用排序。 - 1: 显示每个CPU的信息。 - **mpstat -P ALL 1**:显示多处理器统计数据。 - **sar**:用于收集、报告和保存系统活动信息,可以查看历史数据和实时数据。例如: - ...

    cpu打满问题分析思路

    当遇到类似CPU占用率异常升高的问题时,应从GC和线程两个方面着手排查。首先确认GC是否正常,如果GC正常则需要分析线程活动,并结合源代码检查是否有死循环或其他潜在错误。此外,开发人员在编写代码时必须更加严谨...

    10、linux命令(14题)1

    - CPU过高:检查是否存在死循环,使用`jstack`查看线程堆栈。 - Load过高:检查是否存在Full GC频繁或死循环。 - 类冲突:查看类加载情况,可能需要调整JVM参数。 - 日志分析:使用`less`, `more`, `tail -f`等...

    Java线上故障排查方案.pdf

    1. **系统异常**:例如CPU占用率过高、磁盘空间100%满、系统可用内存过低等。 2. **业务异常**:如服务运行一段时间后自动退出、服务间调用耗时过长、多线程并发处理时出现问题、线程死锁等。 #### 三、如何定位...

    常用的linux系统监控命令整理.docx

    `dstat`还可以同时监控CPU、内存、磁盘和网络等资源。 4. **网络监控**: - `netstat -natp` 用于查看所有网络连接,特别是`Recv-Q`, `Send-Q` 和 `State`,这些指标可以帮助我们了解网络通信的状态。 - `lsof -p...

    weblogic_linux

    - **系统资源检查**:检查Linux服务器的硬件配置(如CPU、内存)是否满足WebLogic Server的最低要求。 #### 安装步骤: 1. **下载WebLogic Server安装包**:从Oracle官方网站下载适合当前Linux环境的WebLogic ...

    java问题定位技术

    Java问题定位技术是Java开发和运维过程中不可或缺的一部分,它能够帮助开发者找到并解决程序中的CPU消耗过高、内存溢出等问题。以下是一些关于这个主题的关键知识点: 1. **线程堆栈解读**: - 线程堆栈是记录程序...

    东方通tongweb7.0 windows+linux双版本

    - **性能提升**:采用优化的JVM和线程调度策略,降低CPU占用,提升响应速度。 - **缓存技术**:支持缓存机制,减少数据库交互,提高处理效率。 - **压缩与GZIP**:自动启用HTTP压缩,减小网络传输数据量,加快...

Global site tag (gtag.js) - Google Analytics