1

我使用单个 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命令。计算最大值总是给我 256MB 这是默认值。

4

2 回答 2

1

我解决了!

我的 Spring Boot 项目是一个多模块项目:

  • base_module(POM 类型)
    • .elasticbeanstalk
      • 配置.yaml
    • module1(删除模块。在 pom.xml 中导入 module2 和 module3)
    • 模块2
    • 模块3
    • 档案

其中一个模块(我正在部署的那个 jar)导入了其他模块。我的错误是我把它放在Procfile了基本模块的根目录中。同样在config.yaml文件中,我放置了以下几行:

deploy:
    artifact: module1/target/app.jar

所以命令eb deploy没有考虑到Procfile.

解决方案是将.elasticbeanstalk文件夹移动到文件module1夹中,从 中删除我上面所说的行,config.yamlProcfile在根目录中添加module1以下行:

web: java -jar target/app.jar -Xmx896M

最终的项目结构是:

  • base_module(POM 类型)
    • module1(删除模块。在 pom.xml 中导入 module2 和 module3)
      • .elasticbeanstalk
        • 配置.yaml
      • 源代码
      • 目标
    • 档案
    • 模块2
    • 模块3

希望它可以帮助某人!

于 2018-02-27T19:13:31.260 回答
0

创建一个包含您的 application.jar 和 Proc 文件的 zip 文件。上传并将其部署在 elasticbeanstalk 中。

在您的 Procfile web 中写入以下行: java -jar application.jar -Xmx896M

于 2018-03-21T14:05:08.007 回答