首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在亚马逊EBS (弹性BeanStalk)上捕获OutOfMemory错误

如何在亚马逊EBS (弹性BeanStalk)上捕获OutOfMemory错误
EN

Stack Overflow用户
提问于 2012-08-07 16:17:20
回答 2查看 2.2K关注 0票数 1

这里有一个棘手的问题--我们有一个Java web应用,部署在亚马逊ElasticBeanStalk上的Tomcat web服务器上。我们认为我们有一个内存泄漏b/c似乎每晚的JVM崩溃的OutOfMemory异常。问题是在崩溃之后,EBS会自动丢弃旧的EC2实例,并重新启动一个新的实例。所有的日志和信息也会被丢弃...

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

有没有人经历过类似的问题,并知道如何在EBS上捕获这些错误?

EN

回答 2

Stack Overflow用户

发布于 2012-08-07 17:17:09

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

以下是我的诊断建议:

  1. 获取正在运行的实例的读取值以检查/使用
  2. 查看“终止保护”--是否设置为“启用”--它可以解释问题的“报废”部分(如果报废是指实例终止并被移除)。您可以使用AWS控制台在EC2实例的属性中找到这一点。
  3. 查看一下配置您的Tomcat服务器的Java memory设置。也许最大值(Xmx)比虚拟机更大!?如果是这样的话,也许Tomcat实际上是在内存不足的情况下运行机器,这可以解释EC2对内存不足的一些响应。我假设你的意思是“停止”而不是“废弃”,否则你怎么知道你得到了一个内存不足的错误?
  4. 如果你手动终止一个正在运行的实例上的tomcat/java进程,这个实例会保持运行吗(或者你会被引导并停止这个实例)?如果只是因为您停止tomcat而发生了一些事情,这意味着某个监控进程正在启动,并关闭机器explicitly.
  5. use -XX:-HeapDumpOnOutOfMemoryError以生成一个转储文件-这将帮助您找出泄漏的位置,并有望解决根本原因。

祝好运。希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2015-04-23 09:43:50

考虑像Sumologic这样的日志收集服务。系统将收集您指定的日志文件,并可用于联机分析。因此,即使您的EC2实例被替换,您也可以通过取证来查看它们发生了什么

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11841826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档