在Tomcat的线程相关Mbeans中,我在Catalina.ThreadPool下看到。
有不同的属性即。 maxThreads,currentThreadCount,currentThreadsBusy等。
那么,我在哪里可以获得这些Mbean属性的描述, 每个属性指示的内容,我需要在我的监控自动化代码中包含它,这将提供线程利用率统计信息。
也有可能我想看看源代码,我在哪里可以得到它?
当我看到Mbean类名(通过jconsole)时,它显示为org.apache.tomcat.util.modeler.BaseModelMBean,但是当我浏览BaseModelMBean的源代码时,我看到没有字段或数据成员代表这些上面提到的属性这个类的一部分或它实现的接口。
然后在这里表示Mbean的哪个实现?
答案 0 :(得分:2)
maxThreads,currentThreadCount,currentThreadsBusy JMX属性与Tomcat Connector用于处理传入请求的线程池相关。您可以在应用程序线程列表中看到通常名为http-nio-[port-number]-exec-[sequence-number]
的线程。
当请求到达连接器时,后者通过线程池为其分配某个线程,该线程将通过"忙碌"直到处理请求。因此, currentThreadsBusy 反映了当前正在处理的请求数。
maxThreads 定义了您在任何情况下都不想超过的主题数量。当currentThreadsBusy计数器达到maxThreads阈值时,不再能处理请求,并且应用程序会阻塞。
currentThreadCount 表示线程池现在拥有的线程数量,忙碌和空闲,线程池将终止某些线程(如果它们在一段时间内未使用或创建新线程)对于maxThreads,如果有需求,请参阅下面的详细信息。
"引擎盖",自Tomcat 7以来,org.apache.tomcat.util.net.AbstractEndpoint
除其他外,负责线程管理。如果它使用java.util.concurrent.ThreadPoolExecutor
作为线程池(默认选择),则maxThreads映射到ThreadPoolExecutor的maximumPoolSize
,currentThreadsBusy - activeCount
和currentThreadCount - poolSize
话虽如此, currentThreadsBusy 是监控网络应用程序健康状况的最佳选择。 maxThreads更像是一个静态值(除非你随意动态更改它)。 currentThreadCount 可以提供一些有用的信息,但有一定的时间延迟。
答案 1 :(得分:0)