当前位置: 58彩票app下载 > 编程技术 > 正文

高cpu消耗检测,Windows下Tomcat内存占用过高问题跟

时间:2019-09-23 12:42来源:编程技术
一、难题陈述 汤姆cat上面铺排比相当多个java项指标war包,tomcat运营一段时间后,发掘cpu占用过高,整个分界面卡死! 此篇博客首要记录当java程序出现较高的cpu消耗费时间怎么检查评定

一、难题陈述


  汤姆cat上面铺排比相当多个java项指标war包,tomcat运营一段时间后,发掘cpu占用过高,整个分界面卡死!

此篇博客首要记录当java程序出现较高的cpu消耗费时间怎么检查评定和意识难题。基本思路是:

二、通过process explorer查看java进度下的线程

  1. 探寻消耗cpu较高的历程;
  2. 58彩票app安卓版下载,追溯到该进程下的线程;
  3. 翻开该线程下的货仓日志。

process explorer是Windows系统和应用程序监视工具。

linux下的要紧步骤是经过top找到消耗cpu较高的长河,然后通过ps命令查六柱预测应进度下的线程。最终经过jstack打字与印刷相应的库房日志,以找到相应的程序地点。此处推荐一篇博客。

58彩票app下载,process explorer下载:

《线上使用故障排查之一:高CPU占用》

下载后直接展开就能够:

windows下也是依据那几个思路,不过windows下要找到相应的标题亟需依赖更加多工具。这里就死板地宣读二个难题,然后一步步追踪下去。

58彩票app安卓版下载 1

  1. 编纂最简易的cpu消耗函数,并运营;

使用PID为3764的进程,点开javaw.exe进程:

58彩票app安卓版下载 2

public class EmptyWhileTest {
    public static void main(String[] args){
        System.out.println("start to run an empty loop!");
        while(true){
            //do nothing
        }
    }
}

此刻会发觉TID为4060的线程占用CPU最高,上面找到该进度在类型中的地点。

  1. 开发windows自带的天职管理器,查看消耗cpu较高的进度,能够观察PID=5620的进度,消耗cpu达到了四分三;

三、通过jstack把进程下所以的Java线程栈的剧情打字与印刷出文件中

jstack是java虚构机自带的一种商旅追踪工具,用于转移设想机当前每一日的线程快速照相,满含虚构机中每一个线程正在实践的秘诀货仓的聚焦,用于固定线程出现长日子暂停的因由,如死锁、死循环、外界财富长日子等待等

在cmd命令里输入:jstack -l 37六11次车:

58彩票app安卓版下载 3

将4060十进制转成16进制(在线工具:

找到nid=0xfdc,找到前边对应的java类对应的行数,就可以定位到标题。

58彩票app安卓版下载 4

![](https://upload-images.jianshu.io/upload_images/1037811-31819ed55e845408.png)

image.png
  1. 查找该进度下消耗cpu较高的线程,作者这边运用了process explorer工具。下载解压直接运转就足以了。直接用这几个,也得以节约第二步在职责管理器里面查看进程。找到相应的长河,然后右键,属性,就能够看看相应的线程了。

    58彩票app安卓版下载 5

    进程.png

    58彩票app安卓版下载 6

    线程.png

  2. 线程ID是832,通过有个别在线工具,换算成16进制正是0x340。

![](https://upload-images.jianshu.io/upload_images/1037811-b27c1dcff9d76044.png)

image.png
  1. 切换成jdk的bin目录上面,用jstack打字与印刷相应的旅社信息。

C:Program FilesJavajdk1.8.0_92bin> jstack 5620

58彩票app安卓版下载 7

image.png

  1. 找到nid=0x340的线程,能够看出,EmptyWhileTest.java:6,就是大家发出空循环的地点。

其一正是回顾的搜索并定位cpu高消耗进程的格局。

编辑:编程技术 本文来源:高cpu消耗检测,Windows下Tomcat内存占用过高问题跟

关键词: