许多线程正在等待条件和服务器的负载超过100

问题描述 投票:1回答:1

Tomcat中WAITING状态的线程太多。 50%的线程处于条件状态

Tomcat 7. Cpu核心16. Cpu us82%。内存足够,16g可用空间。半小时内只有1 fullgc。 Linux sys load有时会是50 +,50 +,50 +和100+。我的代码中从未有过ExecutorService或ThreadPool。

“catalina-exec-682”守护程序prio = 10 tid = 0x00007f530442e800 nid = 0x16f8等待条件[0x00007f51b9a3a000] java.lang.Thread.State:在sun.misc.Unsafe.park(本地方法)等待(停车) - 停车到在java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject的java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)等待<0x000000073168d480>(java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject) .await(AbstractQueuedSynchronizer.java:2043)位于org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)的java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)。 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java)中的java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)中的apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32): 1130)在org.apache.tomcat.util.threads.TaskThre的java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) ad $ WrappingRunnable.run(TaskThread.java:61)at 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(本地方法)等待(停车) - 停车到在java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject的java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)等待<0x000000073168d480>(java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject) .await(AbstractQueuedSynchronizer.java:2043)位于org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)的java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)。 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java)中的java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)中的apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32): 1130)在org.apache.tomcat.util.threads.TaskThre的java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) ad $ WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:745)

锁定的可拥有同步器: - 无

我说明没有线程状态正在等待条件,所有这些线程都是由tomcat创建的,但是50%正在等待条件。

java multithreading performance jvm tomcat7
1个回答
0
投票

好吧,也许是因为当你检查时他们没有什么可做的 - 马丁詹姆斯

这似乎是tomcat线程池。如果不使用它们,它们不会做任何事情。您应该能够将池大小设置为更小的值,但我不认为这会产生影响。 - 彼得劳里

谢谢你的回答,一切都好,没有错。

© www.soinside.com 2019 - 2024. All rights reserved.