gpt4 book ai didi

multithreading - 如何找出哪个tomcat webapp有线程泄漏?

转载 作者:行者123 更新时间:2023-11-28 22:07:28 25 4
gpt4 key购买 nike

在运行 3 个 Tomcat web 应用程序的生产系统中,我们最近注意到 Tomcat 由于线程泄漏而崩溃。三个 webap 中的两个正在相互作用,我想找出这两个组件中的哪一个导致了这个线程堆积。

问题:找出 3 个 web 应用程序中哪个有线程泄漏的好方法/工具是什么?

我的java技能很生疏。我对 Tomcat 不是很熟悉,并且随着我的进行而发现。我启动了jconsole找出线程泄漏。我不愿意安装额外的(或非默认的)工具来解决这个问题,因为这是一个生产系统。

在下面的 jconsole 屏幕截图中,您可以看到线程数在增长; Tomcat/catalina 进程在 08:52 停止,几分钟后线程数达到最大值 893。

jconsole

根据要求,

  • Connector元素:<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" maxThreads = "600" minSpareThreads = "150" acceptCount = "150" connectionTimeout = "30000" />

  • “Tomcat 崩溃”是指没有更多事件记录到 catalina.log 中文件,以及 3 个 Web 应用程序的日志文件中的任何一个。只有底层的 Apache 正在记录事件,并出现 HTTP 500 错误。

最佳答案

不确定您是否有能力在系统上部署新代码。

在类似情况下对我有帮助的最简单的更改 - 也使用 tomcat - 是给每个执行程序/线程池/线程一个有意义的名称,一个可以追溯到 webapp 模块的名称创建线程。

瞧,线程转储突然看起来很友好。这也是在紧要关头通过 guava/ThreadFactoryBuilder 完成的。 .

关于multithreading - 如何找出哪个tomcat webapp有线程泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50057551/

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