我使用单个 EC2 t2.micro 实例 (1GB RAM) 在 Elastic Beanstalk 上部署了一个 Spring Boot 应用程序。
我需要增加应用程序的 JVM 堆大小,但我无法做到这一点。我尝试过的事情是:
- 设置
JAVA_OPTS
EB 控制台环境配置中的变量,值为-Xms512m -Xmx896m
. - 使用
Procfile
部署应用程序在项目根文件夹中包含以下行:web: java -jar <relative-path-to-jar> -Xms512m -Xmx896m
我还能尝试什么?
注意:要检查正在运行的应用程序的 JVM 堆大小,我通过 ssh 进入实例并使用 jstat
命令为 this answer描述。计算最大值总是给我 256MB,这是默认值。
最佳答案
我解决了!
我的 Spring Boot 项目是一个多模块项目:
- base_module(POM 类型)
- .elasticbeanstalk
- config.yaml
- module1(已删除的模块。在 pom.xml 中导入 module2 和 module3)
- 模块2
- 模块3
- 配置文件
- .elasticbeanstalk
其中一个模块(我正在部署的 jar )导入了其他模块。我的错误是我将 Procfile
放在基本模块的根目录中。另外,在 config.yaml 文件中,我添加了以下几行:
deploy:
artifact: module1/target/app.jar
因此命令 eb deploy
没有考虑 Procfile
。
解决方案是将 .elasticbeanstalk
文件夹移动到 module1
文件夹中,从 config.yaml
中删除我上面所说的行,然后使用以下行在 module1
的根目录中添加 Procfile
:
web: java -jar target/app.jar -Xmx896M
最终的项目结构是:
- base_module(POM 类型)
- module1(已删除的模块。在 pom.xml 中导入 module2 和 module3)
- .elasticbeanstalk
- config.yaml
- 来源
- 目标
- .elasticbeanstalk
- 配置文件
- 模块2
- 模块3
- module1(已删除的模块。在 pom.xml 中导入 module2 和 module3)
希望对大家有帮助!
关于java - 无法在 AWS Elastic Beanstalk Java SE 平台上设置 JVM 堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48990349/