gpt4 book ai didi

java - 如何捕获 Amazon EBS (Elastic BeanStalk) 上的 OutOfMemory 错误

转载 作者:行者123 更新时间:2023-12-01 05:12:37 26 4
gpt4 key购买 nike

这是一个棘手的问题 - 我们有一个 Java Web 应用程序,部署在 Amazon ElasticBeanStalk 上的 Tomcat Web 服务器上。我们相信我们有内存泄漏,因为 JVM 似乎每天晚上都会因 OutOfMemory 异常而崩溃。问题是崩溃后,EBS 会自动废弃旧的 EC2 实例并启动一个新的实例。所有日志和信息也被废弃......

我现在正在开发一个自定义 CloudWatch 指标来监控 JVM 的内存(您可能认为应该有一个准备好的指标...),但这不会帮助我生成堆转储

有人遇到过类似的问题并且知道如何在 EBS 上捕获这些错误吗?

最佳答案

这听起来确实像是不寻常的 EC2(不是 EBS)实例行为。有趣的是,如果 Tomcat 崩溃,机器实例就会受到影响(停止或终止)。

这是我建议诊断的:

  1. 读取正在运行的实例以进行检查/使用
  2. 看看“终止保护” - 是否设置为“启用” - 这可以解释问题的“报废”部分(如果报废意味着实例终止并被删除)。您可以使用 AWS 控制台在 EC2 实例的属性中找到此信息。
  3. 查看 Tomcat 服务器配置的 Java 内存设置。也许最大值比虚拟机大(Xmx)!?如果是这样,Tomcat 确实是在内存不足的情况下运行机器,这可以解释 EC2 对内存不足的一些响应。我假设你的意思是“停止”而不是“报废”,否则你怎么知道你遇到了内存不足错误?
  4. 如果您手动终止工作实例上的 tomcat/java 进程,该实例是否仍保持运行状态(或者您是否会启动并停止该实例)?如果仅仅因为您停止 tomcat 就发生了一些事情,则意味着某些监视进程正在启动并显式地关闭机器。
  5. 使用 -XX:-HeapDumpOnOutOfMemoryError 生成转储文件 - 这将帮助您找出泄漏所在并有望修复根本原因。

祝你好运。希望有帮助。

关于java - 如何捕获 Amazon EBS (Elastic BeanStalk) 上的 OutOfMemory 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11841826/

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