Fresh和Empty Tomcat 7.0安装吃了很多CPU

时间:2012-07-06 11:47:52

标签: tomcat ubuntu

ubuntu,11.04,11.10。 tomcat 7.0.25-7.0.28,jdk sun 1.6_30 - 1.6_33。

解压缩,删除了webapp文件夹。 catalina启动顶级节目后 在1cpu x64 4核心上由tomcat吃掉CPU的170%。在2cpu x64 4core它 显示高达400%。

tomcat中没有安装应用程序。试图搞清楚 消耗cpu的线程 - 下面是5个顶线:

"VM Periodic Task Thread" prio=10 tid=0x0000000040a7f000 nid=0x166c waiting on condition

"ajp-bio-8009-AsyncTimeout" daemon prio=10 tid=0x00007feaf0666800 nid=0x16ad sleeping[0x00007feafe011000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.apache.tomcat.util.net.JIoEndpoint$AsyncTimeout.run(JIoEndpoint.java:148)
        at java.lang.Thread.run(Thread.java:662)

"http-bio-8080-AsyncTimeout" daemon prio=10 tid=0x000000004204f800 nid=0x16ab waiting on condition [0x00007feafead1000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.apache.tomcat.util.net.JIoEndpoint$AsyncTimeout.run(JIoEndpoint.java:148)
        at java.lang.Thread.run(Thread.java:662)

"ContainerBackgroundProcessor[StandardEngine[Catalina]]" daemon prio=10 tid=0x0000000041d1b800 nid=0x16a9 sleeping[0x00007feafe405000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1517)
        at java.lang.Thread.run(Thread.java:662)

"VM Thread" prio=10 tid=0x0000000040a39000 nid=0x1665 runnable

看上去没什么好看的。所以,我被困了。有没有人 知道去哪里更远?还有一件事:有几个虚拟 几乎相同设置的盒子 - 从来没有看到如此巨大的CPU 消耗。

2 个答案:

答案 0 :(得分:1)

状态为TIMED_WAITING的线程不需要CPU周期。只要所有线程都处于此状态,Tomcat就不能成为负载的原因。

你还能做什么?

  1. 在分析器中运行Tomcat。与线程转储(仅向您显示当前状态)不同,分析器将收集分析信息。这将允许您查看哪些方法使用了多长时间。

  2. 在webapp文件夹中至少保留一个应用程序。我不确定当Tomcat找不到任何时会做什么。

  3. 检查Tomcat是否会查看您认为可以执行的webapp文件夹。也许环境变量可以影响这一点。

  4. 这可能是因为Tomcat正在启动。不太可能,但也许等待几分钟可能会有所帮助。

  5. 你还剩多少内存?也不太可能,因为这应该会产生巨大的负载,但CPU将非常闲置。

答案 1 :(得分:1)

我在java“VM Periodic Task Thread”中遇到了高CPU使用率的问题。

问题的原因最终归因于闰秒的Linux问题,详见本博文:java leap second bug – 30 June / 1 July 2012 – fix

按照其中列出的步骤(停止ntpd,重置日期,重新启动ntpd)解决了我的高CPU使用率问题。