gpt4 book ai didi

java - 确定 Tomcat 中数百个 AJP 线程的原因

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:48 25 4
gpt4 key购买 nike

我们有两台以 Apache 为前端的 Tomcat 6.0.20 服务器,两者之间使用 AJP 进行通信。 Tomcat 反过来使用 JBoss 集群上的 Web 服务。

今天早上,其中一台 Tomcat 机器在我们机器的 8 个内核中的 6 个上使用了 100% 的 CPU。我们使用 JConsole 进行堆转储,然后尝试连接 JVisualVM 以获取配置文件以查看占用所有 CPU 的原因,但这导致 Tomcat 崩溃。至少我们有堆转储!

我已将堆转储加载到 Eclipse MAT 中,我发现我们有 565 个 java.lang.Thread 实例。其中一些显然是完全合法的,但绝大多数都被命名为“ajp-6009-XXX”,其中 XXX 是一个数字。

我非常了解 Eclipse MAT,但一直找不到解释。如果有人对 Tomcat 为什么要这样做有一些指示,或者有一些关于找出为什么使用 Eclipse MAT 的提示,我们将不胜感激!

最佳答案

我想这不是一个直接的答案,但也许作为生产中的一种缓解方法,您可以根据 http://tomcat.apache.org/tomcat-6.0-doc/config/ajp.html 限制配置中 AJP 的 maxThreads 来限制损害。 ?

默认值为 200,这肯定是很多线程 - 但这可能无法解释上面的 565。显然,这有可能将问题推到别处,但也许您最好能够在那里调试问题,否则它会以不同的方式表现出来。是否有可能您的负载量很大?在导致您遇到的问题期间,Apache 的行为有什么值得注意的吗?

关于java - 确定 Tomcat 中数百个 AJP 线程的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2161129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com