`
zhoushijun
  • 浏览: 270926 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

分析JAVA应用CPU占用过高的问题

阅读更多

使用jstack分析java程序cpu占用率过高的有关问题
使用jstack分析java程序cpu占用率过高的问题
1,使用jps查找出java进程的pid,如3707

2,使用top -p 14292 -H观察该进程中所有线程的CPU占用。

[root@cp01-game-dudai-0100.cp01.baidu.com ~]# top -p 14292 -H  
top - 22:14:13 up 33 days,  7:29,  4 users,  load average: 25.68, 32.11, 33.76  
Tasks: 113 total,   2 running, 111 sleeping,   0 stopped,   0 zombie  
Cpu(s): 68.3%us,  6.3%sy,  0.0%ni, 20.2%id,  0.1%wa,  0.2%hi,  4.9%si,  0.0%st  
Mem:  65965312k total, 65451232k used,   514080k free,    82164k buffers  
Swap:   975864k total,   972052k used,     3812k free,  9714400k cached  
  
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                         
15844 root      15   0 6889m 5.7g 4864 S 20.6  9.1 814:13.29 java                                                                                                                                                                            
15848 root      15   0 6889m 5.7g 4864 S 13.0  9.1 460:25.17 java                                                                                                                                                                            
15611 root      15   0 6889m 5.7g 4864 S 12.7  9.1 468:17.77 java                                                                                                                                                                            
15613 root      15   0 6889m 5.7g 4864 S 11.7  9.1 479:40.45 java                                                                                                                                                                            
15743 root      15   0 6889m 5.7g 4864 S 11.7  9.1 443:04.80 java                                                                                                                                                                            
15612 root      15   0 6889m 5.7g 4864 S 11.0  9.1 453:43.68 java                                                                                                                                                                            
15965 root      15   0 6889m 5.7g 4864 S 10.3  9.1 371:00.33 java                                                                                                                                                                            
15490 root      15   0 6889m 5.7g 4864 S  7.7  9.1 255:32.74 java                                                                                                                                                                            
15587 root      15   0 6889m 5.7g 4864 S  7.3  9.1 282:27.58 java                                                                                                                                                                            
15590 root      15   0 6889m 5.7g 4864 S  7.3  9.1 205:48.37 java                                                                                                                                                                            
15491 root      15   0 6889m 5.7g 4864 R  6.3  9.1 279:09.08 java                                                                                                                                                                            
15689 root      15   0 6889m 5.7g 4864 S  5.7  9.1 251:42.36 java                                                                                                                                                                            
16935 root      15   0 6889m 5.7g 4864 S  5.7  9.1 190:34.37 java                                                                                                                                                                            
15665 root      15   0 6889m 5.7g 4864 S  5.3  9.1 250:07.34 java                                                                                                                                                                            
16920 root      15   0 6889m 5.7g 4864 S  5.3  9.1 241:34.50 java                                                                                                                                                                            
15671 root      15   0 6889m 5.7g 4864 S  5.0  9.1 239:49.97 java                                                                                                                                                                            
15492 root      15   0 6889m 5.7g 4864 S  4.7  9.1 210:23.09 java                                                                                                                                                                            
14322 root      16   0 6889m 5.7g 4864 S  4.3  9.1 107:39.61 java                                                                                                                                                                            
14316 root      16   0 6889m 5.7g 4864 S  4.0  9.1 107:18.43 java                                                                                                                                                                            
14317 root      16   0 6889m 5.7g 4864 S  4.0  9.1 107:29.13 java                                                                                                                                                                            
15591 root      15   0 6889m 5.7g 4864 S  4.0  9.1 114:34.90 java                                                                                                                                                                            
14313 root      16   0 6889m 5.7g 4864 S  3.7  9.1 107:12.70 java                                                                                                                                                                            
14314 root      15   0 6889m 5.7g 4864 S  3.7  9.1 107:28.05 java                                                                                                                                                                            
14319 root      16   0 6889m 5.7g 4864 S  3.7  9.1 107:27.43 java                                                                                                                                                                            
14321 root      15   0 6889m 5.7g 4864 S  3.3  9.1 108:01.12 java                                                                                                                                                                            
15589 root      15   0 6889m 5.7g 4864 R  3.0  9.1 109:01.91 java                                                                                                                                                                            
15615 root      15   0 6889m 5.7g 4864 S  3.0  9.1 114:55.29 java                                                                                                                                                                            
16808 root      15   0 6889m 5.7g 4864 S  2.7  9.1 279:05.03 java                                                                                                                                                                            
14315 root      15   0 6889m 5.7g 4864 S  2.0  9.1 107:45.00 java                                                                                                                                                                            
14320 root      15   0 6889m 5.7g 4864 S  2.0  9.1 107:48.30 java                                                                                                                                                                            
15489 root      15   0 6889m 5.7g 4864 S  1.7  9.1  57:38.46 java                                                                                                                                                                            
15670 root      15   0 6889m 5.7g 4864 S  1.3  9.1   5:55.43 java                                                                                                                                                                            
14318 root      15   0 6889m 5.7g 4864 S  0.7  9.1 107:45.88 java                                                                                                                                                                            
14826 root      15   0 6889m 5.7g 4864 S  0.7  9.1  25:07.64 java   

 

3,找出CPU消耗较多的线程id,如15844,将15844转换为16进制0x3de4,注意是小写哦
4,使用jstack 14292|grep -A 10 0x3de4来查询出具体的线程状态。

    [root@cp01-game-dudai-0100.cp01.baidu.com ~]# jstack 14292|grep -A 10 0x3de4  
    "pool-52-thread-1" prio=10 tid=0x000000005a08e000 nid=0x3de4 waiting on condition [0x00002ae63d917000]  
       java.lang.Thread.State: WAITING (parking)  
            at sun.misc.Unsafe.park(Native Method)  
            - parking to wait for  <0x00000006f9a0a110> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)  
            at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)  
            at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)  
            at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)  
            at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)  
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)  
            at java.lang.Thread.run(Thread.java:662)  

 

通过这些线程状态便可基本定位问题之所在。

 

分享到:
评论
1 楼 ykdsg 2016-07-05  
通过这些线程状态便可基本定位问题之所在,请问怎么定位?

相关推荐

    【原创】java程序cpu占用过高问题分析

    这篇原创博客“【原创】java程序cpu占用过高问题分析”探讨了如何识别和解决这些问题。 首先,分析CPU占用过高的第一步是获取性能数据。这通常通过Java的JMX(Java Management Extensions)或者监控工具如VisualVM...

    用java获取CPU占用率

    在IT领域,特别是系统监控与性能分析中,获取CPU占用率是评估系统健康状况和优化资源分配的关键步骤。本文将详细解析如何使用Java语言来获取CPU占用率,这不仅涉及了基本的Java编程技巧,还深入到了操作系统级别的...

    java应用cpu占用过高问题分析及解决方法

    Java 应用 CPU 占用过高问题分析及解决方法 Java 应用程序的 CPU 占用率过高是一个常见的问题,影响着系统的性能和稳定性。在本文中,我们将讨论 Java 应用程序 CPU 占用率过高的原因、分析方法和解决方法。 一、...

    Java进程cpu占用率高

    在Java编程环境中,当遇到“Java进程CPU占用率高”的问题时,这通常意味着Java应用程序在执行过程中消耗了大量计算资源,可能导致系统响应变慢,甚至出现性能瓶颈。本篇文章将深入探讨这个问题,并提供相关解决方案...

    用java获取cpu占用

    通过上述方法,你可以根据实际需求选择合适的方式来获取Java应用的CPU占用率。在进行性能优化或者问题排查时,这将是一个非常实用的工具。记得在实际应用中遵循最佳实践,确保代码的稳定性和兼容性。

    测量Java应用程序的CPU和内存占用率

    通过JNI,我们可以编写特定于操作系统的C/C++代码来调用系统调用,获取关于CPU使用率和内存占用的数据,然后将这些信息传递回Java应用程序。相比依赖于解析操作系统特定的命令行工具(如Unix的`ps`命令)输出,这种...

    70-Java程序CPU占用1001

    在Java编程环境中,当遇到"Java程序CPU占用100%"的问题时,这通常意味着程序中存在性能瓶颈或者死循环,导致CPU资源被过度消耗。为了解决这个问题,我们需要进行一系列的诊断步骤来定位问题所在。以下是详细的排查...

    java实战CPU占用过高问题的排查及解决

    在 Java 应用程序中,CPU 占用过高是一个常见的问题,可能会导致服务器崩溃或应用程序崩溃。因此,快速定位和解决 CPU 占用过高问题是非常重要的。本文将分享 Java 实战 CPU 占用过高问题的排查及解决方法。 排查...

    java监控linux cpu使用率

    CPU使用率是指在特定时间间隔内,CPU被占用的时间比例,通常以百分比表示。在Linux中,可以通过`/proc/stat`文件获取这些信息。这个文件包含了系统启动以来的CPU使用统计,包括用户进程、系统进程、空闲时间等。 在...

    linux服务器找到占用cpu高的java代码的办法

    在Linux服务器环境中,Java应用程序可能由于各种原因导致CPU使用率过高,这可能会影响系统的整体性能。要找到占用CPU高的Java代码,我们可以采取一系列步骤来诊断和优化问题。以下是一种详细的方法: 1. **查看系统...

    java 通过jni查看windows的CPU利用率的问题

    标题“Java通过JNI查看Windows的CPU利用率的问题”涉及到的是Java编程语言如何利用Java Native Interface (JNI) 这一技术来获取Windows操作系统的CPU使用情况。JNI是Java平台标准的一部分,它允许Java代码和其他语言...

    CPU占用高

    有一些工具如Process Explorer(微软出品)或VisualVM(Java应用性能分析工具)能提供更详细的性能分析,帮助定位问题。 8. **资源调度优化**: 对于多核CPU,合理分配任务到不同核心可以有效减少单个核心的负载...

    java进程占用CPU和内存太高问题排查相关测试文件.zip

    在Java应用程序的运行过程中,有时会遇到进程占用CPU和内存过高导致系统性能下降的问题。针对这类问题,开发者需要进行深入的排查与优化。本压缩包文件包含了一些关键工具和输出,帮助我们理解如何进行这样的排查。 ...

    一次因Java应用造成CPU过高的排查实践过程

    总结来说,处理Java应用CPU过高的问题需要结合系统监控工具和Java自身提供的诊断工具,通过分析线程状态和堆栈信息来定位问题。同时,理解应用程序的运行环境和组件配置也至关重要,例如在Web容器中部署应用时要注意...

    CPU使用率查看工具

    当CPU使用率过高,可能导致设备过热、响应变慢或者电池寿命缩短。通过这样的工具,用户可以找出占用CPU资源过多的应用或进程,以便优化设备的性能。 描述中提到的ZIP文件是常见的压缩格式,用于打包多个文件到一个...

    Java进程CPU使用率高排查

    近期java应用,CPU使用率一直很高,经常达到,通过以下步骤完美解决,分享一下。  1.jps 获取Java进程的PID。  2.jstack pid &gt;&gt; java.txt 导出CPU占用高进程的线程栈。  3.top -H -p PID 查看对应进程的哪个...

    JAVA分析进程占用过大原因

    在处理JAVA应用时,经常会遇到CPU占用率过高的问题,这不仅会影响应用程序的性能,还可能导致系统响应缓慢甚至崩溃。本文将基于提供的信息,详细介绍如何在Linux环境下诊断并解决JAVA进程CPU占用率过高的问题。 ###...

    分析tomcat占用cpu高的原因

    在IT行业中,尤其是在服务器管理与优化的领域,Tomcat作为一款广泛应用的Java应用服务器,其性能问题至关重要。本文将深入探讨“Tomcat占用CPU高的原因”这一主题,旨在帮助管理员解决此类问题,提升系统效率。 ...

Global site tag (gtag.js) - Google Analytics