gpt4 book ai didi

tomcat - 错误记录和分析 Web 应用程序

转载 作者:行者123 更新时间:2023-11-28 21:56:22 24 4
gpt4 key购买 nike

我已经在 windows7 机器上使用 tomcat7 部署了两个 Web 应用程序。使用一段时间后,任何一个应用程序都会抛出 java.lang.OutOfMemoryError: PermGen space 错误。 2-3 分钟后,另一个应用程序也停止响应。所以我开始查看 tomcat7 错误日志文件 tomcat7-stderr.xxx.log,我发现日志说一些 http-bio 线程抛出了内存不足错误。

我想知道哪个应用程序抛出第一个错误,所以我想让 tomcat 记录带有错误的应用程序名称,我该怎么做?

我可以检查每个 Web 应用程序从分配给 tomcat 的内存中占用了多少内存吗?

当前 tomcat 有 Initial Memory Pool is 512 MB and Maximum memory pool is 900 MB

最佳答案

I want to know which application first throws error, so I want tomcat logs the error with the Application name, Is it possible to do?

Tomcat 和您部署到 Tomcat 的所有应用程序都在一个 JVM 中运行。这意味着这些应用程序中的任何一个都可能是原因,但这也意味着它也可能是导致问题的一个或多个应用程序的集合。换句话说,您可能无法将手指指向一个应用。

那是因为您看到了 OOME:PermGen 有几个可能的原因。

  • 您有很多(数千个)JSP。那些被编译为类和类增加了 PermGen 要求。这是一个合法的用例,如果您有很多 JSP,您只需要一个更大的 PermGen。
  • 您有一个动态生成类的应用程序。像 cglib 这样的库可以做到这一点。您可能不会直接使用它,但是很多框架都在使用它或类似的库。同样,我建议增加 PermGen,因为您可能只需要多一点就可以运行该应用程序。
  • 您正在重新部署应用程序(您将新的 WAR 放入“webapps”目录而无需重新启动)。这本身不是问题,但如果您的应用程序没有完全取消部署,您最终会遇到缓慢的内存泄漏,这将导致您用完 PermGen 空间。如果您遇到此问题,请查看 these slides特别是 #11,它更多地讨论了这个问题并展示了如何找出原因。

在这三个中,最后一个最有可能发生。

Can I check which web application is taking how much memory from memory allocated to tomcat 7?

附加分析器或 jvisualvm。他们中的大多数人对 PermGen 没有很好的了解,因为他们通常关注堆的使用,但他们会提供帮助。

如果您使用的是 jvisualvm,这些是一些用于调试内存相关问题的有用插件:“Memory Pools”、“Visual GC”和“VisualVM-BufferMonitor”。

默认情况下不会安装它们,因此您必须转到工具 -> 插件并安装它们。

无论您使用什么工具,我怀疑您能否找到按应用程序划分内存使用情况的分割。 “应用程序”是一个容器级别的概念,而不是 JVM 或您的分析器可能理解的概念。如果您需要隔离每个应用程序的内存使用情况,最好一次只将一个应用程序部署到 Tomcat。这样您就知道内存中唯一的内容是与该应用程序相关的资源。

如果您处于生产环境中,您可能需要考虑运行多个单独的 Tomcat 实例(每个应用程序一个)。这样做的结果是,您将为每个应用程序拥有单独的 JVM,如果一个应用程序出现故障,它不会影响其余应用程序。缺点是额外的 JVM 和 Tomcat 实例会有一些开销。如果您有可用的内存,通常可以接受它提供的额外稳定性的权衡。

after sometime of use any one of application throws java.lang.OutOfMemoryError: PermGen space error. after 2-3 mins another application also stops to respond.

当JVM发生OOME时,需要尽快重启JVM。在 OOME 发生后,关于什么会继续工作和什么不会继续工作的所有赌注都落空了。恢复正常工作环境的唯一方法是重新启动 JVM。

关于tomcat - 错误记录和分析 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28760411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com