【问题标题】:How to find memory usage of web applications in apache tomcat如何在 apache tomcat 中查找 Web 应用程序的内存使用情况
【发布时间】:2015-03-09 06:01:01
【问题描述】:
我正在开展一个项目,我需要查找部署在 Apache tomcat 中的 Web 应用程序的内存使用情况。在 Intranet 架构中,我想开发一个工具来查找访问已部署的 Web 应用程序及其正在使用的内存的用户。有人可以帮我开始这个项目。我现在已经配置了 Apache tomcat 并部署了一些 Web 应用程序。性能监控是我项目的目标。
谢谢。
【问题讨论】:
标签:
apache
tomcat
memory-management
web-applications
【解决方案1】:
您可以很容易地使用 JMX 访问 Tomcat JVM 的内存使用情况。请参阅此SO 了解更多信息。请注意,您将获得 tomcat + 所有已部署 Web 应用程序的内存使用情况。您无法获取单个 Web 应用程序的内存使用情况,因为 Tomcat 为容器和应用程序共享一个 Java 进程。如果你想更好地控制每个应用程序的内存使用,我建议你要么使用更复杂的应用程序服务器,要么为每个 webapp 使用一个 tomcat 实例。
要监控连接的用户,我想你必须在应用层做一些事情。 Tomcat 并不真正了解“用户”的概念,因为这通常是您在代码中实现的东西(如 Spring Security)。
【解决方案2】:
【讨论】:
-
-
是的,您可以,有一些外部工具可以帮助您。您可以尝试在 google 上搜索工具,然后您就可以选择您喜欢的工具。以下链接也可能对您有所帮助link我希望此评论将您带入正确的方向
-
【解决方案3】:
我会推荐 glowroot 一个非常好的开源 Java 应用程序性能监控 (APM) 工具,您可以在不更改任何 Java 源代码的情况下附加到 Tomcat。
要使用它只需要download 它并在你的 JVM 的开头添加
-javaagent:path/to/glowroot.jar
tomcat需要添加环境变量
JAVA_OPTS="$JAVA_OPTS -javaagent:path/to/glowroot.jar"
在/etc/tomcat8/tomcat8.conf
更多详情参见项目github的说明
它有很轻的overhead,您可以在生产中使用临时来提取多个应用程序性能信息并使用 Tomcat 进行测试。
您可以看到来自 JVM 和 histogram 堆内存 here 的仪表的演示