AWS:Java Runtime Environment没有足够的内存来继续

时间:2017-03-21 22:31:36

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

我在64bit Amazon Linux 2016.09 v2.5.2 running Tomcat 8 Java 8免费套餐上运行AWS Elasticbeanstalk环境(实例类型:t1.micro)。

我有许多RESTful服务,当一个特定的服务被调用时,它做了一些工作,我一直得到502 error,以及日志中的以下内容:

  

OpenJDK 64位服务器VM警告:信息:   os :: commit_memory(0x00000000e2220000,130215936,0)失败;   error ='无法分配内存'(errno = 12)

     

Java Runtime Environment没有足够的内存来继续。    本机内存分配(mmap)无法映射130215936字节以提交保留内存。    包含更多信息的错误报告文件保存为:    /tmp/hs_err_pid31500.log OpenJDK 64位服务器VM警告:忽略选项MaxPermSize = 64m;支持已在8.0中删除

问题

这是否意味着我需要升级到付费版本,即大于实例类型:t1.micro

或者,有没有办法可以配置我的环境来处理这个问题?

我问的原因是因为上面的日志表明Java App只需要130mb130215936 bytes)内存,在下面你可以看到JVM heap大小是更大。所以我不希望它在130mb落空。

更多信息

我有以下配置设置:

enter image description here

由于

更新

我将Max JVM更改为256mb,但仍然收到错误:

  

OpenJDK 64位服务器VM警告:忽略选项MaxPermSize = 256m;   在8.0 OpenJDK 64位服务器VM警告中删除了支持:INFO:   os :: commit_memory(0x00000000c0000000,89456640,0)失败;   error ='无法分配内存'(errno = 12)

     

Java Runtime Environment没有足够的内存来继续。    本机内存分配(mmap)无法映射89456640字节以提交保留内存。    包含更多信息的错误报告文件保存为:    /tmp/hs_err_pid14014.log OpenJDK 64位服务器VM警告:忽略选项MaxPermSize = 256m;支持已在8.0中删除

但这只是89mb

1 个答案:

答案 0 :(得分:3)

根据更新中的错误消息,您似乎尝试调整JVM永久生成大小。尝试将此设置保留为默认值。相反,将初始和最大堆大小都设置为64mb。

如果它仍然崩溃,一旦崩溃,您可以ssh到AWS实例并查看正在使用内存的内容。在beanstalk中,在您的环境配置中,在" Instances"下,您可以选择要与实例一起使用的密钥对。您可以在EC2控制台中找到beanstalk启动的实例,就像任何其他实例一样。