【问题标题】:Tomcat Thread Monitoring Mbeans DescriptionTomcat 线程监控 Mbean 说明
【发布时间】:2011-12-09 01:42:33
【问题描述】:

在 Catalina.ThreadPool 下看到的 Tomcat 的线程相关 Mbean。

有不同的属性,即。 maxThreads、currentThreadCount、currentThreadsBusy 等

那么,我在哪里可以得到这些 Mbean 属性的描述, 这些属性中的每一个都表示什么,我需要将其包含在我的监控自动化代码中,这将提供线程利用率统计信息。

也有可能我想看源代码,在哪里可以得到?

当我看到 Mbean 类名(通过 jconsole)时,它显示为 org.apache.tomcat.util.modeler.BaseModelMBean,但是当我浏览 BaseModelMBean 的源代码时,我发现没有字段或数据成员代表这些上面提到的这个类的一部分或它实现的接口的属性。

那么这里代表的是哪个Mbean的实现呢??

【问题讨论】:

    标签: tomcat monitoring threadpool jmx


    【解决方案1】:

    maxThreads、currentThreadCount、currentThreadsBusy JMX 属性与 Tomcat 连接器用于处理传入请求的线程池相关。您可以在应用程序线程列表中看到通常命名为http-nio-[port-number]-exec-[sequence-number] 的线程。 当请求到达Connector时,后者通过线程池的方式为其分配某个线程,该线程将一直“忙碌”,直到请求被处理。因此,currentThreadsBusy 反映了当前正在处理的请求数。

    ma​​xThreads 定义了在任何情况下都不想超过的线程数。当 currentThreadsBusy 计数器达到 maxThreads 阈值时,无法处理更多请求,应用程序阻塞。

    currentThreadCount 表示线程池当前拥有的线程数,有忙也有空闲,如果有的线程在一段时间内没有被使用,线程池会终止一些线程或者创建新的,up到maxThreads,如有需求,详见下文。

    “Under the hood”,从 Tomcat 7 开始,它是 org.apache.tomcat.util.net.AbstractEndpoint,除其他外,它负责线程管理。如果它使用java.util.concurrent.ThreadPoolExecutor 作为线程池(默认选择),maxThreads 映射到 ThreadPoolExecutor 的 maximumPoolSize,currentThreadsBusy - 到 activeCount,currentThreadCount - 到 poolSize

    话虽如此,currentThreadsBusy监控 Web 应用程序运行状况的最佳选择。 maxThreads 更像是一个静态值(除非您随意动态更改它)。 currentThreadCount 可能提供一些有用的信息,但有一定的时间延迟。

    //与答案无关。添加此文本是为了克服 stackoverflow 的验证,即编辑应至少为 6 个字符,但情况并非总是如此,特别是对于与计算机编程相关的答案。 SFO 应重新考虑此验证。

    ^ 同意以上观点,感谢编辑。 igor.zh.

    【讨论】:

      【解决方案2】:

      您可以在 JioEndpoint 中阅读有关 getCurrentThreadCount()、getCurrentThreadsBusy() 和 maxThreads 的信息: Javadoc 要么 Source

      【讨论】:

        猜你喜欢
        • 2012-11-22
        • 2018-07-26
        • 1970-01-01
        • 1970-01-01
        • 2016-06-12
        • 2016-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多