2014-06-11 41 views
4

我们一直在监视我们的线程在tomcat 7中,最近我们开始看到有时线程数量会变成正常值的两倍,即大约200个线程(而不是通常大约80线程)。在tomcat 7线程转储上看到多个TIMED_WAITING线程

在服用线程转储,我看到的时间期间的线程数增加,增加由于线程的大量存在(约100),如下所示(所有等待588cc7d5):

"http-bio-8080-exec-201" - Thread [email protected] 
    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

可能您已达到8080连接器线程池大小的限制,并且所有传入的请求都堆叠在队列中并等待已发布的线程。 maxThreads的默认值是200,但可以在您的配置中更改此值。 详情请参阅http://tomcat.apache.org/tomcat-7.0-doc/config/executor.html。 完整的线程转储对于细节更有用。