AWS Elastic Beanstalk中的容器选项

时间:2012-04-06 10:59:10

标签: java jvm amazon-web-services elastic-beanstalk

我们在Elastic Beanstalk中部署了一个java web应用程序,其中最小实例数为1,最大实例数为2,用于自动扩展。我们使用的自定义AMI是带有Sun JDK 6的c1.medium。

环境状态变为黄色,然后变为红色。从快照日志检入日志文件后,我们发现了一个异常 - 引起:java.lang.OutOfMemoryError:Java堆空间。假设这可能是环境失败的可能原因之一。 我们在Environment Container选项中配置的设置是

初始JVM堆大小(MB) - 256M

最大JVM堆大小(MB) - 512米 Java虚拟机将使用的最大堆大小,使用-Xmx在JVM启动命令行上指定。

最大JVM永久生成大小(MB) - 512m

我应该将堆大小从512米增加到更多还是没问题。

1 个答案:

答案 0 :(得分:1)

我认为你的最大JVM永久代大小太大了。这是documentation of AWS

  

JVM选项

     

Java虚拟机中的堆大小会影响对象的数量   在垃圾收集之前在内存中创建 - 一个管理过程   你的应用程序的内存发生了。您可以指定初始堆大小   和最大堆大小。较大的初始堆大小允许更多   在垃圾收集发生之前要创建的对象,但它也是   意味着垃圾收集器将需要更长的时间来压缩堆。   最大堆大小指定JVM的最大内存量   在繁重活动期间扩展堆时可以分配。

     

在“编辑配置”窗口中,您可以设置初始值和   使用初始JVM堆大小(MB)和最大JVM堆大小   最大JVM堆大小(MB)框。可用内存取决于   Amazon EC2实例类型。有关亚马逊的更多信息   适用于您的AWS Elastic Beanstalk的EC2实例类型   环境,转到Amazon EC2用户中的Instances Families和Types   指南。

     

永久生成是用于的JVM堆的一部分   存储类定义和关联的元数据。修改大小   永久生成,在Maximum JVM中键入新大小   永久代大小(MB)框

我发现这个Rimuhosting how-to article非常适合解释Xmx设置。