解压缩,删除了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 消耗。
答案 0 :(得分:1)
状态为TIMED_WAITING
的线程不需要CPU周期。只要所有线程都处于此状态,Tomcat就不能成为负载的原因。
你还能做什么?
在分析器中运行Tomcat。与线程转储(仅向您显示当前状态)不同,分析器将收集分析信息。这将允许您查看哪些方法使用了多长时间。
在webapp文件夹中至少保留一个应用程序。我不确定当Tomcat找不到任何时会做什么。
检查Tomcat是否会查看您认为可以执行的webapp文件夹。也许环境变量可以影响这一点。
这可能是因为Tomcat正在启动。不太可能,但也许等待几分钟可能会有所帮助。
你还剩多少内存?也不太可能,因为这应该会产生巨大的负载,但CPU将非常闲置。
答案 1 :(得分:1)
我在java“VM Periodic Task Thread”中遇到了高CPU使用率的问题。
问题的原因最终归因于闰秒的Linux问题,详见本博文:java leap second bug – 30 June / 1 July 2012 – fix。
按照其中列出的步骤(停止ntpd,重置日期,重新启动ntpd)解决了我的高CPU使用率问题。