我正在管理一个运行 Tomcat 的服务器,该服务器最近流量很大。
如果我在任务管理器中监视内存使用情况,我可以看到内存使用量不断增长,最终 tomcat 在 1GB 左右崩溃。
这是我在 Tomcat 属性中设置的内存相关位(这是一个 Windows 服务器):
初始内存池:1024 MB
最大内存池:1024 MB
-XX:MaxPermSize=256M
奇怪的是,自从这些问题出现以来,我已经将 Lambda Probe 部署到 Tomcat 实例,我看到的内存使用值要低得多,例如,任务管理器可能显示已使用 467MB,而 Probe 中的“总”使用量为 212 MB。此外,Probe 中列出的最大总内存为 1.29GB,而我预计的是 1GB,即上面设置的最大内存。
如果我使用 Probe 强制运行垃圾收集器,我可以让 Tomcat 暂时不崩溃(据我所知,是无限期的)。那么为什么 GC 不能自动运行并阻止 Tomcat 崩溃呢?
谢谢。
答案1
菲尔,
您需要调整 JVM 配置。看一下我在 Tomcat 服务器中使用的 JMV 配置,它在高流量下表现非常好:
http://acevedoalberto.wordpress.com/2009/01/16/hello-world/
阿尔贝托