java - 无法在 AWS Elastic Beanstalk Java SE 平台上设置 JVM 堆大小

标签 java amazon-web-services spring-boot jvm heap-size

我使用单个 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
    • 配置文件

其中一个模块(我正在部署的 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
      • 来源
      • 目标
    • 配置文件
    • 模块2
    • 模块3

希望对大家有帮助!

关于java - 无法在 AWS Elastic Beanstalk Java SE 平台上设置 JVM 堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48990349/

相关文章:

JavaFX TableView 事件只触发一次?

Java 编译器看不到我的类

c++ - AWS C++ 开发工具包 UploadPart 超时

java - 在 Amazon s3 上上传的视频中检测人脸时,SQSMessageSuccess 中没有响应

spring - 我的 Spring Boot 应用程序能否仅在某些 @RequestMappings 上运行 HTTPS?

java - 使用 spring RestTemplate 消耗 json+hal _embedded 资源的问题

mysql - 在 Spring Boot 中动态向 MySQL 添加新列

java - 我希望我的整数堆叠在我的 JTextField 中

java - Eclipse:有没有办法让 Eclipse 输出运行程序的命令?

sql - 如何在 AWS Athena 上生成日期列表