我们继续在tomcat 7中监视我们的线程,最近我们开始看到线程数量有时会变成正常值的两倍,即大约200个线程(而不是通常的大约80个线程)。
在进行线程转储时,我看到在线程数增加的时间内,由于存在大量(大约100个)线程而增加,如下所示(所有等待588cc7d5):
"http-bio-8080-exec-201" - Thread t@2856
java.lang.Thread.State: TIMED_WAITING
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <588cc7d5> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.parkNanos(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(Unknown Source)
at java.util.concurrent.LinkedBlockingQueue.poll(Unknown Source)
at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:86)
at org.apache.tomcat.util.threads.TaskQueue.poll(TaskQueue.java:32)
at java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Locked ownable synchronizers:
- None
有谁知道会导致这种行为的原因?
答案 0 :(得分:0)
可能您已达到8080连接器线程池大小的限制,并且所有传入请求都堆叠在队列中并等待已发布的线程。 maxThreads的默认值为200,但可以在配置中更改此值。 有关详细信息,请参阅http://tomcat.apache.org/tomcat-7.0-doc/config/executor.html。 完整的线程转储对于细节更有用。