我们的一个生产 Tomcat 盒运行两个 Web 应用程序。一个是我们的,另一个是我们的供应商提供的黑盒应用程序,用于“帮助”我们的应用程序。
不幸的是,我们的生产环境遇到了内存限制,我正在努力增加 RAM,让 Tomcat 启动时为 JVM 提供更多内存。不过,在执行此操作之前,我想看看这两个 Web 应用程序中的哪一个占用了所有 RAM!
内置 Tomcat 管理器中是否有显示 webapp 的 RAM 使用情况的选项?如果没有,是否有提供这种级别诊断可用性的免费解决方案?
如果需要的话,我愿意编写自己的轻量级 Web 应用程序来实现这一点,并在监视另外两个的机器上运行一个。
谢谢,
IVR Avenger
答案1
看看 MuleSoft 的 Tcat Server,它可以为你提供大量信息内存利用率。您可以将其与现有的 Tomcat 安装一起使用。
答案2
尝试使用JMX启用此功能非常简单,只需在启动脚本中添加以下行即可:
JAVA_OPTS=$JAVA_OPTS:"-Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
如您所见,有加密和身份验证选项可以满足您当地的偏执狂经理的需求。
你没有提到你正在使用什么监控系统;你可能必须设置它才能与 JMX 通信。Zabbix 有扎普卡特,这里有一些OpenNMS 说明,这是Nagios 插件。
答案3
不幸的是,我认为没有任何方法可以细分单个 Web 应用程序的 RAM 使用情况,即使使用 JMX 也是如此。但是,仅针对此实验,您可以尝试在自己的 Tomcat 实例中运行每个 Web 应用程序。然后测量每个单独的 JVM 的内存使用情况。
答案4
Zenoss 可让您查看运行 tomcat 的服务器、tomcat 进程,并通过 JMX 对其进行监控。它有相当多的文档,而且是开源的。