java - Tomcat 监控 - connectionCount JMX mbean

标签 java tomcat threadpool jmx mbeans

问题一:

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/

相关文章:

java - 使用原型(prototype) : why is javaee-endorsed-api. jar 的新 Maven 项目被复制到 POM 中?

java - 在 XML 中初始化 TableLayout 并以编程方式填充它 - Android (java)

java - 用java编译包

java - UsernameToken 的 SOAP wsdl 规范

docker - 如何使用 Tomcat for java 在 Docker 容器上选择 Tomcat

python - 我可以在 python 多处理中将方法传递给 apply_async 或 map 吗?

tomcat - 在tomcat服务器上部署java web应用程序

tomcat - 如何通过 Tomcat 强制重试集成 Windows 身份验证?

Java并发对象池?

c++ - 在互斥量上使用多个 std::unique_lock,FIFO 中的所有线程都等待进程?