我有一个使用单个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



希望对您有所帮助!

08-26 10:20