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