Tomcat中的WAITING状态中的线程太多。 50%的线程正在等待条件
Tomcat 7。 CPU核心16。 cpu us82%。 内存足够,16g可用空间。 半小时内只有1个fullgc。 Linux sys负载有时是50 +,50 +,50 +和100+。 我的代码中从来没有ExecutorService或ThreadPool。
“ catalina-exec-682”守护程序prio = 10 tid = 0x00007f530442e800 nid = 0x16f8 等待条件[0x00007f51b9a3a000] java.lang.Thread.State: 在sun.misc.Unsafe.park上等待(停车)(本机方法) -停车以等待<0x000000073168d480>(一个java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject) 在java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) 在 java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await(AbstractQueuedSynchronizer.java:2043) 在 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) 在org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104) 在org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32) 在 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) 在 org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) 在java.lang.Thread.run(Thread.java:745)
锁定的可拥有同步器: -没有
“ catalina-exec-681”守护程序prio = 10 tid = 0x00007f530442c800 nid = 0x16f7 等待条件[0x00007f51b9a7b000] java.lang.Thread.State: 在sun.misc.Unsafe.park上等待(停车)(本机方法) -停车以等待<0x000000073168d480>(一个java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject) 在java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) 在 java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await(AbstractQueuedSynchronizer.java:2043) 在 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) 在org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104) 在org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32) 在 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) 在 org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) 在java.lang.Thread.run(Thread.java:745)
锁定的可拥有同步器: -没有
我希望没有线程处于等待状态,所有这些线程都是由tomcat创建的,但是50%处于等待状态。
答案 0 :(得分:0)
好吧,也许是因为当您检查时,他们无事可做-马丁·詹姆斯
这似乎是tomcat线程池。如果不使用它们,它们什么也不做。您应该可以将池大小设置为较小的值,但是我不希望这会有所作为。 –彼得·劳里
谢谢您的回答,一切都很好,没有错。