2

我正在寻找一种运行时解决方案来查找 Web 应用程序的内存使用情况。我正在提供一个框架,其中包括不同客户端部署多个 Web 应用程序的 tomcat。有时其中一个会消耗大量内存,从而破坏整个过程。我想要一个管理器网络应用程序(如 tomcat 的管理器),它可以检测到这一点,并可能取消部署\重新部署有问题的网络应用程序。另一种解决方案(我认为不可能)是分别为每个 Web 应用程序分配一块堆。

要求客户更改现有的网络应用程序是可能的,但我宁愿不这样做。

有什么想法吗?

4

3 回答 3

3

您无法拦截每个 webapp 中的分配,也没有来自垃圾收集器的回调,因此您无法知道每个 webapp 使用了多少内存。我认为你最好部署几个 Tomcat 实例,这样一个“流氓”webapp 就不会杀死所有其他实例(每个 webapp 最多一个 Tomcat,但你也可以创建组来限制实例数量,具体取决于批评)您的不同应用程序)。

于 2012-09-04T11:44:16.477 回答
1

Tomact 作为单个 java 进程运行,因此很难为每个应用程序分配内存。您只能增加MaxPermSize,-Xmx

您可以检查Tomcat 的泄漏检测器,但它几乎没有帮助,因为您无法更改其他应用程序的源代码。

于 2012-09-04T11:42:40.977 回答
0

我想你想看的是 VisualVM,它会给你一个关于 JVM 中 Tomcat 内存使用情况的概述。

http://techblog.zabuchy.net/2012/monitoring-of-tomcat-with-visualvm-and-visualgc/

于 2012-09-04T11:39:24.833 回答