如何在tomcat中管理webapps足迹?

时间:2012-09-04 11:37:23

标签: java tomcat memory-management out-of-memory

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

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

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

您可以查看leak detector for Tomcat,但由于您无法更改其他应用的源代码,因此无法提供帮助。

答案 2 :(得分:0)

我认为您想要看的是VisualVM,这将为您提供JVM中Tomcats内存使用情况的概述。

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