Elastic Beanstalk不断替换我的实例

时间:2015-08-01 22:11:22

标签: java tomcat elastic-beanstalk

我已经将AWS webap部署到AWS Elastic Beanstalk并且每隔几天,有时候我会更频繁地收到通知:

  

AWS Elastic Beanstalk通知 - 将实例i-5dc46494添加到您的环境

几分钟后:

  

消息:删除了实例' i-60a05f96'来自你的环境。 (原因:实例处于关闭'状态)

首先,我是否可以找到替换当前实例所需的原因?

第二,上次这样做我登录并做了一个' dmesg'就在它关闭之前:

[4383952.557902] Out of memory: Kill process 1608 (java) score 796 or    sacrifice child
[4383952.557910] Killed process 1608 (java) total-vm:2496244kB, anon-rss:482052kB, file-rss:0kB

可能是原因。它在这里指的是什么记忆?分配给JVM的内存还是实例的内存?

我也跑了顶级和自由-m

[ec2-user@ip-172-31-40-184 tomcat8]$ free -m
      total         used    free  shared  buffers   cached
Mem:  592           574     17      0     13        41
-/+ buffers/cache:  520     71
Swap:  0            0       0

这是pid 1608

[ pid ]   uid  tgid total_vm      rss nr_ptes swapents oom_score_adj name
[ 1608]    91  1608   624061   120513     332        0             0 java

任何有关正在发生的事情的见解都将受到赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

您使用的是t1.micro个实例吗?我看到你的RAM大小不到1 Gb。我认为用默认设置运行Tomcat 8是不够的。

但是,你可以这样做:

  • 将您的实例至少升级到t2.micro。它比t1.micro更便宜,性能更好。 (首先这样做)
  • 通过设置JAVA_OPTS来限制您的Tomcat 8内存消耗。使用setenv.sh创建.ebextensions文件。
  • 添加交换文件/磁盘空间。请阅读this question。但有人在其中一个答案中发出警告:

      

    我已经了解到在EC2微型实例上使用交换空间会适得其反,因为a)它是缓慢的交换空间而b)使用它会对IO进行计数,而IO也需要支付,以便在下个月获得意外账单