处于WAIT状态的HTTP线程数量非常多

时间:2012-07-06 13:01:30

标签: java multithreading performance tomcat jboss

使用Java Visual VM: 我可以在WAIT状态下看到近100个线程。

在JBoss Server.xml中我有:

  <!-- A HTTP/1.1 Connector on port 8080 -->
  <Connector port="8080" address="${jboss.bind.address}"
     maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
     emptySessionPath="true"
     enableLookups="false" redirectPort="8443" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true"/>

我在Jboss-Service.xml中有一个ThreadPool,它看起来像:

    <mbean code="org.jboss.util.threadpool.BasicThreadPool"
      name="jboss.system:service=ThreadPool">
      <attribute name="Name">JBoss System Threads</attribute>
      <attribute name="ThreadGroupName">System Threads</attribute>
      <attribute name="KeepAliveTime">60000</attribute>
      <attribute name="MaximumPoolSize">10</attribute>
      <attribute name="MaximumQueueSize">1000</attribute>
      <attribute name="BlockingMode">run</attribute>
   </mbean>

在线程转储中,大多数线程处于以下状态:

   "http-0.0.0.0-8180-97" - Thread t@7296
       java.lang.Thread.State: WAITING
        at java.lang.Object.wait(Native Method)
        - waiting on <23791834> (a org.apache.tomcat.util.net.MasterSlaveWorkerThread)
        at java.lang.Object.wait(Object.java:485)
        at org.apache.tomcat.util.net.MasterSlaveWorkerThread.await(MasterSlaveWorkerThread.java:81)
        at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:107)
        at java.lang.Thread.run(Thread.java:619)

Java Visual VM还为守护程序线程列出了一个非常高的数字 直播:176守护进程:171

我正在使用JBoxx 4x

1 个答案:

答案 0 :(得分:3)

当一个工作线程处于空闲状态时,通常会在空队列中等待一些新工作。

我怀疑这些线程正在等待更多的工作。