问题一:
This questions描述了什么是 currentTheadBusy 和 currentThreadCount mbean,但还有 connectionCount mbean。
此时,我的生产 Tomcat 应用程序中这 3 个 mbean 的值为:
currentTheadBusy: 1
currentThreadCount: 36
connectionCount: 249
为什么连接比线程多这么多?我如何阅读这些值(value)观?
问题2:
connectionCount 如何与 Manager/localhost/myapp/activeSessions mbean 关联?此 mbean 的当前值为 1125。这些值是相关的还是我遗漏了这个概念?
谢谢。
最佳答案
connectionCount
是连接器处理的连接数,在很大程度上是无关紧要的。客户端通常会建立连接,通过该连接发出多个请求,然后关闭连接。如果您有 Apache httpd、nginx 等反向代理,那么随着时间的推移,可能会有一个连接处理大量请求。
Why are there so much more connections than threads?
因为具有少量线程的线程池可以随着时间的推移处理大量工作,尤其是在整体负载较低的情况下。如果你一整天每秒收到 1 个请求,并且没有一个请求的完成时间超过 1 秒,那么单个线程可以处理 100% 的负载。如果每个客户端针对 1 个请求建立 1 个连接,然后关闭连接,则 1 * 60 * 60 * 24
= 86400
个连接由单个线程处理24 小时。
如果您的请求只需不到 1 秒即可完成,那么您每天可以使用一个线程处理 86400 个请求。您每天可以处理 2 * 86400
= 172800
连接/请求,线程池中只有一个额外的线程(从 1 到 2 个线程)。
How the connectionCount is related with the Manager/localhost/myapp/activeSessions?
不相关。
[Am I] missing the concept?
管理器
MXBean 跟踪 HTTP session 管理。您的应用程序中目前有 1125 个 Activity session 。
看看关于 Tomcat's presentations 的精彩介绍页。具体来说,搜索“监控”。
关于java - Tomcat 监控 - connectionCount JMX mbean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48815532/