`
xiaoboss
  • 浏览: 650802 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVA进程CPU占用率分析方法

 
阅读更多

1:  首先把JDK Linux版本上传到服务器上.
2:  使用命令 jstack PID 命令打印出CPU占用过高进程的线程栈.
3: 使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高. 比如:

top - 17:23:50 up 12 days,  1:44,  8 users,  load average: 4.85, 3.56, 3.76
Tasks: 556 total,   1 running, 555 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.4%us,  4.4%sy,  0.4%ni, 71.6%id, 15.5%wa,  0.0%hi,  0.6%si,  0.0%st
Mem:     32072M total,    31972M used,      100M free,      265M buffers
Swap:     2047M total,       81M used,     1965M free,    23734M cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
17363 webserve  20   0 4475m 2.9g  10m R   54  9.4 163:29.84 java
16452 webserve  20   0 4475m 2.9g  10m S    6  9.4   6:03.00 java
11283 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.35 java
11284 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.41 java
11285 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:20.89 java
11288 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.18 java
11291 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.04 java
11280 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:20.66 java
11281 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.41 java
11282 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.26 java
11286 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.36 java
11287 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.43 java
11289 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.80 java
11290 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:22.13 java
11292 webserve  20   0 4475m 2.9g  10m S    2  9.4   7:21.35 java
11293 webserve  20   0 4475m 2.9g  10m S    2  9.4  24:29.70 java
18727 webserve  20   0 4475m 2.9g  10m S    1  9.4   3:08.50 java
18812 webserve  20   0 4475m 2.9g  10m S    1  9.4   3:05.80 java
18829 webserve  20   0 4475m 2.9g  10m S    1  9.4   3:03.32 java
19888 webserve  20   0 4475m 2.9g  10m S    1  9.4   3:04.66 java


比如上面信息就可以看到 17363 线程CPU使用较高, 把这个值转换为 16 进制, 然后在第2步打印的
线程栈中进行搜索, 就可以知道这个线程栈是做什么的了.

 

 

1 top  
得到最高的pid
2  查看pid子进程
top -H -p PID
3 查看子进程的详情

./jstack -F  pid

分享到:
评论

相关推荐

    用java获取cpu占用

    在Java编程环境中,获取CPU占用率是常见的系统监控任务,这对于性能分析、故障排查或资源管理至关重要。要实现这一功能,通常需要利用Java提供的操作系统接口,例如Java Management Extensions (JMX) 或者 sun.misc...

    java进程高CPU占用故障排查.txt

    从给定的部分内容中可以看到,`top`命令显示PID为2633的Java进程CPU占用率为300%。这表明该进程内部存在严重的问题,导致了CPU资源的过度消耗。 2. **使用ps命令获取线程详情**: ```shell [root@localhost logs]...

    控制cpu的占用率

    了解这些因素后,我们可以通过以下方法控制CPU占用率: 1. **优化代码**:针对CPU密集型任务,可以使用更高效的算法,减少不必要的计算。例如,使用哈希表替代线性搜索,减少循环次数等。 2. **调整线程数量**:...

    70-Java程序CPU占用1001

    通过输入`top`命令,我们可以看到各个进程的CPU和内存使用率,从中找出CPU占用率最高的Java进程。记下该进程的PID(进程ID)。 2. **获取问题线程的TID** 接下来,我们需要找出这个进程中的具体哪个线程导致了CPU...

    CPU占用高

    标题“CPU占用高”指的是计算机或服务器的中央处理器在运行过程中...通过以上分析,我们可以根据具体情况采取相应的解决措施,降低CPU占用率,提高系统性能。记住,持续监控系统状态和定期维护是预防CPU占用高的关键。

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

    Java标准库虽然提供了诸如堆栈大小的测量方法,但并不直接支持测量Java进程在操作系统中的CPU占用率和内存使用量。为解决这个问题,开发者通常需要借助于操作系统级别的接口,如JNI(Java Native Interface)来获取...

    CPU占用率检测模块.rar

    CPU占用率检测模块是计算机系统监控中的重要组成部分,主要用于实时监测和分析计算机处理器的使用情况。这个模块能够帮助用户理解系统的性能瓶颈,优化系统资源分配,以及排查可能导致系统响应变慢或卡顿的问题。...

    linux下查看java进程下线程占用cpu情况

    通过以上方法,你可以深入了解Linux下Java进程及线程对CPU的占用情况,从而进行问题定位和性能优化。在实际操作中,通常会结合多个工具和方法,以便从不同角度全面分析。记得,持续监控和分析是找出问题的关键。

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

    当Java进程CPU占用率过高时,可能的原因包括无限循环、线程阻塞、计算密集型任务或垃圾回收问题等。`44974.stack`文件很可能包含了Java线程堆栈跟踪,通过分析这个文件,我们可以看到各个线程的状态和它们正在执行...

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

    在本文中,我们将讨论 Java 应用程序 CPU 占用率过高的原因、分析方法和解决方法。 一、Java 应用程序 CPU 占用率过高的原因 1. Poor Programming Practices:糟糕的编程实践是 Java 应用程序 CPU 占用率过高的...

    教你找出 运行java项目,使cpu 100%,如何排查出是哪个jar包的哪个线程导致的

    在Java开发过程中,有时会遇到项目运行时CPU占用率达到100%的问题,这可能是由于某个线程的无限循环、阻塞或者资源消耗过大导致的。以下是一套详细的排查步骤来帮助你找出是哪个jar包的哪个线程造成了这个问题。 ...

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

    4. **分析JStack日志**:打开`jstack.log`,寻找CPU占用率高的线程。线程堆栈中显示的调用路径就是当前正在执行的代码路径。如果某个线程的堆栈中有很多重复的调用,那很可能就是问题所在。 5. **代码审查**:根据`...

    Android 查看CUP占用率

    #### 二、查看每个进程CPU占用率的方式 在Android平台上,可以通过多种方式来查看每个进程的CPU占用率。下面将逐一介绍这些方法: ##### 1. 使用`adb shell top` `adb shell top`命令是查看系统当前运行进程及其...

    java在cpu的占有率

    - **对于 Linux 系统**:通过读取 `top` 命令的输出来获取 CPU 占用率。 ##### `getMonitorInfoBean` 该方法用于构造一个 `MonitorInfoBean` 对象,用于返回系统的监控信息,如内存使用情况、CPU 使用率、线程数量...

    Linux系统中CPU占用率较高问题排查思路与解决方法

    在某个生产环境的Java进程中,CPU占用率达到300%。首先,通过`ps -mp 2633 -o THREAD,tid,time | sort -rn`找到CPU使用率最高的线程(TID 3626)。接着,将3626转换为16进制(e18),再用`jstack 2633 | grep "e18" ...

    java读取CPU内存信息

    需要注意的是,这仅仅是JVM内部线程的CPU使用情况,并不包括操作系统和其他进程的CPU占用。 为了更好地监控系统资源,Java还提供了`java.lang.management`包下的其他MXBean,如`MemoryPoolMXBean`,它用于获取各个...

    动态显示CPU利用率

    这些工具不仅能提供总体的CPU利用率,还能细分到各个进程,以便分析哪个程序占用了大量的CPU资源。 在编程层面,可以使用各种编程语言的库来实现动态显示CPU利用率。例如,Python有psutil库,Java有Java Management...

    获得进程CPU信息的代码集合

    以下代码展示了如何获取当前Java进程的CPU使用率和内存占用: ```java import java.lang.management.ManagementFactory; import java.lang.management.MemoryMXBean; import java.lang.management.MemoryUsage; ...

Global site tag (gtag.js) - Google Analytics