Linux HotSopt虚拟机GC线程的CPU占用率
2014-05-31 23:34
253 查看
下面的问题将会检验你有关Linux系统上的Java程序的垃圾回收和High CPU排错的知识。在过度调用GC或及CPU占用率过高的时候,这种排错技术是至关重要的。假设你没有使用像是Compuware
dynaTrace或者JVisualVMware这样先进的监视工具。有关于这些工具的使用教程将会在以后发布,但是请先确保自己掌握了基础的排错原则。
在Linux系统运行的时候,怎样可以监视并计算每一个Oracle HotSpot或者JRockit JVM垃圾回收(GC)线程占用了多少CPU资源呢?
在Linux系统上,Java线程是作为本地的线程来实现的,这就导致每一个线程都是一个单独的Linux进程。这就意味着,你要使用top-H命令(线程开关视图)来监视HotSpot
JVM产生的所有Java进程的CPU占用率。
也就是说,根据你正在使用的GC策略和服务器规范的不同,HotSpot和JRockit JVM会为每一个GC线程分配一个确定的序号来区分收集空间的新旧。通过产生的JVM线程库,这些线程可以很轻松地被识别。你可以参考下面这个范例,Oracle JRockit JVM用“(GC Worker Thread X)”的标记方式产生了四个线程。
现在让我们通过这个简单的例子来了解一下这些规则。
第一步是监视和测定:
通过Linux系统的top-hcommand命令的显示结果,来找出每一个GC工作线程的本地线程ID。
确定每一个GC工作线程的CPU占用率。
使用Linux的top -H命令的同时,通过kill -3 命令生成2或3个JVM
Thread Dump。
打开JVM线程池,找到JVM GC工作线程。
然后,通过本地线程的ID(tid属性)找出“top -H”输出的数据和JVM Thread Dump中的数据的关系。
就像你在这个例子中看到的那样,通过这样的线程分析,我们可以发现GC工作线程总共占用了大约20%的CPU资源。这主要是因为在那个时候发生了major GC。请注意使用verbose:gc参数是非常有用的,因为它可以让你分析CPU使用峰值与minor GC以及major GC的关系,以及让你确定JVM GC进程占用了多少CPU资源。
dynaTrace或者JVisualVMware这样先进的监视工具。有关于这些工具的使用教程将会在以后发布,但是请先确保自己掌握了基础的排错原则。
问题:
在Linux系统运行的时候,怎样可以监视并计算每一个Oracle HotSpot或者JRockit JVM垃圾回收(GC)线程占用了多少CPU资源呢?
答案
在Linux系统上,Java线程是作为本地的线程来实现的,这就导致每一个线程都是一个单独的Linux进程。这就意味着,你要使用top-H命令(线程开关视图)来监视HotSpotJVM产生的所有Java进程的CPU占用率。
也就是说,根据你正在使用的GC策略和服务器规范的不同,HotSpot和JRockit JVM会为每一个GC线程分配一个确定的序号来区分收集空间的新旧。通过产生的JVM线程库,这些线程可以很轻松地被识别。你可以参考下面这个范例,Oracle JRockit JVM用“(GC Worker Thread X)”的标记方式产生了四个线程。
第一步——监视GC线程的CPU利用率
第一步是监视和测定:通过Linux系统的top-hcommand命令的显示结果,来找出每一个GC工作线程的本地线程ID。
确定每一个GC工作线程的CPU占用率。
第二步——生成并分析JVM线程池
使用Linux的top -H命令的同时,通过kill -3 命令生成2或3个JVMThread Dump。
打开JVM线程池,找到JVM GC工作线程。
然后,通过本地线程的ID(tid属性)找出“top -H”输出的数据和JVM Thread Dump中的数据的关系。
就像你在这个例子中看到的那样,通过这样的线程分析,我们可以发现GC工作线程总共占用了大约20%的CPU资源。这主要是因为在那个时候发生了major GC。请注意使用verbose:gc参数是非常有用的,因为它可以让你分析CPU使用峰值与minor GC以及major GC的关系,以及让你确定JVM GC进程占用了多少CPU资源。
相关文章推荐
- Linux HotSopt虚拟机GC线程的CPU占用率
- Linux HotSopt虚拟机GC线程的CPU占用率
- Linux HotSopt虚拟机GC线程的CPU占用率
- Linux查看HotSopt虚拟机GC线程的CPU占用率
- Linux下如何查看高CPU占用率线程
- Linux 计算线程CPU占用率
- Linux下如何查看高CPU占用率线程
- linux问题排查 - 高cpu占用率的进程和线程
- Linux下如何查看高CPU占用率线程
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
- 查看linux线程的CPU占用率
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
- Linux下如何查看高CPU占用率线程
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算
- linux下如何获取每个线程的CPU占用率
- Linux下如何查看高CPU占用率线程 LINUX CPU利用率计算