`

统计最耗CPU的java线程

    博客分类:
  • JAVA
 
阅读更多

上一篇帖子说了如何dump最耗CPU的java线程,那么可以借助这个来做下统计,统计谁是做耗CPU的java线程


这里统计有几个假设前提

1:假设耗CPU的线程都是在线程池中new出来的

2:假设系统load经常很高而不是瞬间状态

3:假设线程经常处于繁忙状态而不能被线程池收回

4:假设问题的发生是常事

 

好了上监控脚本

 

while true
  do
     top -b -H -n 1 -p $1 | fgrep java -m 3 >> /tmp/nid2.log 2>&1
  sleep 1
done

 好了上统计脚本

 

 

cat nid2.log | awk '{a[$1]++} END{for(i in a){print i,a[i]}}' | sort -k 2 -n -r

 

统计出了最耗时的java线程以后,就可以用jstack或者kill -3 查看具体的线程上下文了。

分享到:
评论

相关推荐

    java多线程代码案例(创建线程,主线程,线程优先级,线程组,线程同步,线程间的通信)

    本文将深入探讨Java多线程中的关键知识点,包括创建线程、主线程、线程优先级、线程组、线程同步以及线程间的通信。 1. **创建线程** 在Java中,可以通过两种方式创建线程:继承`Thread`类或实现`Runnable`接口。...

    java 监控线程

    Java线程监控是Java开发中一个非常重要的环节,它能够帮助开发者分析程序的运行状态,定位性能瓶颈,预防和解决死锁等问题。本文将详细探讨Java中如何进行线程监控,包括基本概念、常用工具以及具体实践方法。 一、...

    用java获取CPU占用率

    该文件包含了系统自启动以来的统计信息,包括CPU时间的详细记录。代码中`getCpuRateForLinux()`方法试图打开并读取`/proc/stat`,然后解析其中的数据来计算CPU的使用率。这一过程通常涉及对`user`, `nice`, `system`...

    多线程并行执行,汇总结果

    "CountDownLatch" 和 "Thread" 是Java编程语言中实现多线程并行执行的关键工具,它们有助于提高程序的运行效率和响应速度。 **多线程并行执行** 多线程并行执行是指在同一个程序中同时运行多个线程,每个线程负责...

    java获取cpu、内存信息

    Java提供了`java.lang.management`包,该包中的`OperatingSystemMXBean`接口可以帮助我们获取操作系统相关的统计信息,包括CPU使用率。以下是一个简单的示例: ```java import java.lang.management....

    java读取CPU内存信息

    这个程序每隔一秒钟会输出一次内存和线程的统计信息,但请注意,由于CPU利用率的计算涉及到时间间隔,所以需要对获取CPU时间的部分做适当修改,以获取一段时间内的变化,从而计算出CPU利用率。 在项目中,我们可以...

    java监控linux cpu使用率

    这个文件包含了系统启动以来的CPU使用统计,包括用户进程、系统进程、空闲时间等。 在Java中,我们可以利用`Runtime`类或`ProcessBuilder`类来执行Linux命令,如`top`或`vmstat`,然后解析输出以获取CPU使用率。...

    Linux中使用Shell脚本查看Java线程的CPU使用情况

    本文档介绍了一种利用Shell脚本监控Java线程CPU使用情况的方法。以下是详细的知识点: 1. 基于Linux的Java应用程序监控:在Linux环境下,服务器端的Java应用通常在业务高峰期时CPU使用率会升高。为了保证系统的稳定...

    获取当前所有进程线程Cpu占用率.rar

    可以查看当前系统运行的各进程cpu占用率 可以选择一个进程,查询里面各线程cpu占用率。...获取两次统计间隔的cpu时间,除以间隔时间。得到占用率 用途:查看自己写的程序那个线程运行时间最多,耗资源等。

    java 多线程

    - **Java线程调度原则**:Java虚拟机采用的是抢占式调度模型,即线程之间的调度不是基于时间片轮转的,而是由JVM根据线程的优先级等因素决定。优先级高的线程会比优先级低的线程先获取执行权。此外,JVM会根据线程...

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

    在Linux系统中,监控Java进程及其线程的CPU使用情况是进行性能调优的重要环节。以下是一些关于如何实现这一目标的关键知识点。 1. **`ps` 命令**: - `ps` 是一个用于报告当前系统中进程状态的命令。基本用法如 `...

    java统计方法执行时长

    为了更好地统计方法执行时长,可以使用Java的`java.lang.management.ThreadMXBean`类,它提供了获取线程CPU时间的功能。以下是一个使用示例: ```java ThreadMXBean threadMXBean = ManagementFactory....

    java获取CPU等信息.rar

    综上所述,"java获取CPU等信息.rar"可能包含的示例代码或文档将涉及如何使用Java标准库以及可能的第三方库来获取和分析系统的CPU使用率、内存状态、磁盘I/O、网络状况和线程信息等。对于开发系统监控工具或进行性能...

    java程序设计于开发 第七讲 多线程

    线程组提供了线程的统计、监控和保护等功能,例如,可以一次性停止组内所有线程。 在实际编程中,了解这些多线程知识对于编写高效、稳定的并发程序至关重要。例如,我们可以使用ExecutorService和Future来更灵活地...

    OS.rar_java cpu scheduling_进程 内存 java

    在本实验"OS.rar_java cpu scheduling_进程 内存 java"中,我们将深入探讨CPU调度和内存管理这两个重要的操作系统概念,同时结合Java编程语言进行实践。 首先,CPU调度是操作系统中的关键功能,它的目标是有效地...

    windows下查看线程的cpu占用率工具 procexp

    例如,如果发现某个Java线程CPU占用过高,可以结合代码分析找出可能的死循环或者计算密集型任务,进行相应的优化。 总的来说,ProcExp 是一个强大的系统诊断工具,它提供的线程级监控功能在日常的系统管理和故障...

    shell脚本自动监测系统cpu资源,异常彪高时,自动打印应用线程日志文件

    而`vmstat`则输出系统整体的统计信息,包括进程、内存、虚拟内存、块I/O和CPU状态等。通过定时运行这些命令并分析结果,我们可以监测到CPU的使用变化。 在给定的场景中,我们有一个名为`threadDump.sh`的shell脚本...

    统计大文件中各个字符的数量(中文、英文、数字)

    在处理大文件时,多线程可以利用多核CPU的优势,提高计算速度。Python的`threading`库提供了多线程的支持。我们可以为每个切割后的文件创建一个线程,每个线程独立统计其负责的文件中的字符数量。但需要注意的是,...

    一些学习资料(EJB,word,excel,java多线程)

    标题中的“一些学习资料(EJB,word,excel,java多线程)”暗示了这个压缩包包含的资源涉及多个IT领域的学习材料。EJB是Enterprise JavaBeans的缩写,它是Java EE(现在称为Jakarta EE)平台的一部分,用于构建企业级...

    Java 服务器信息监控

    Java的`java.util.ServiceLoader`可以帮助我们发现和加载服务,而`java.lang.management.ManagementFactory`可以获取应用的运行时信息,如线程状态、类加载情况等。 为了实现一个全面的服务器监控系统,开发者还...

Global site tag (gtag.js) - Google Analytics