【问题标题】:how to minimize the memory footprint for a jhipster microservice environment?如何最小化 jhipster 微服务环境的内存占用?
【发布时间】:2019-06-20 22:16:59
【问题描述】:

创建基础微服务环境后:

  • 注册表: jhipster-registry
  • 用户记账和授权: jhipster-uaa
  • 网关: jhipster-gateway
  • 微服务: jhipster-microservice

设置环境变量时内存不足:

JAVA_OPTS='-Xmx512m'

和我的电脑自己的8Go(系统使用的2Go)

jhipster-registry 是通过 ./mvnw 启动的

jhipster-{uaa, gateway, microservice, foo} 通过 ./gradlew 启动

感谢您的帮助

注意:在用于生成这些应用程序的 jh 文件下方

# documentation https://www.jhipster.tech/jdl/
application {
  config {
    baseName                uaa,
    packageName             fr.org.foo.uaa,
    applicationType         uaa,
    serverPort              9999,
    buildTool               gradle,
    clientPackageManager    npm,
    nativeLanguage          en,
    languages               [en,fr],
    enableTranslation       true,
    authenticationType      uaa,
    cacheProvider           hazelcast,
    databaseType            mongodb,
    devDatabaseType         mongodb,
    prodDatabaseType        mongodb,
    searchEngine            elasticsearch,
    enableHibernateCache    true,
    serviceDiscoveryType    eureka,
    testFrameworks          [gatling,cucumber],
    skipClient              true
  }
  entities Workflow, Task, Command
}


application {
  config {
    baseName                gateway,
    packageName             fr.org.foo.gateway,
    applicationType         gateway,
    serverPort              8080,
    buildTool               gradle,
    clientPackageManager    npm,
    nativeLanguage          en,
    languages               [en,fr],
    enableTranslation       true,
    authenticationType      uaa,
    uaaBaseName             "uaa",
    cacheProvider           hazelcast,
    websocket               spring-websocket,
    databaseType            mongodb,
    devDatabaseType         mongodb,
    prodDatabaseType        mongodb,
    searchEngine            elasticsearch,
    enableHibernateCache    true,
    serviceDiscoveryType    eureka,
    clientFramework         react,
    testFrameworks          [gatling,cucumber,protractor],
    jhiPrefix               jhi
  }
  entities Workflow, Task, Command
}

application {
  config {
    baseName                foo,
    packageName             fr.org.foo.foo,
    applicationType         microservice,
    serverPort              8081,
    buildTool               gradle,
    clientPackageManager    npm,
    nativeLanguage          en,
    languages               [en,fr],
    enableTranslation       true,
    authenticationType      uaa,
    uaaBaseName             "uaa",
    cacheProvider           hazelcast,
    websocket               spring-websocket,
    databaseType            mongodb,
    devDatabaseType         mongodb,
    prodDatabaseType        mongodb,
    searchEngine            elasticsearch,
    enableHibernateCache    true,
    serviceDiscoveryType    eureka,
    testFrameworks          [gatling,cucumber],
    jhiPrefix               jhi
  }
  entities Workflow, Task, Command
}

entity Workflow {
    id          Long        required,
    name        String      required minlength(3),
    description String
}

entity Task {
    id          Long        required,
    name        String      required minlength(3),
    type        TaskType    required,
    description String
}

# http://www.workflowpatterns.com/patterns/
enum TaskType {
    Sequence,
    Split,
    Synchronization,
    ExclusiveChoice,
    SimpleMerge
}

entity Command {
    id          Long        required,
    command     String      required minlength(3),
    parameters  String,
    version     String      required
}


relationship OneToMany {
    Workflow{task}  to Task,
    Task{command}   to Command
}

relationship ManyToOne {
    Task{previous}  to Task
    Task{next}      to Task
}

microservice Workflow, Task, Command with foo

【问题讨论】:

    标签: jhipster


    【解决方案1】:

    你确定 JAVA_OPTS 被 mvnw 或 gradlew 使用?

    就我个人而言,我在 spring-boot-maven-plugin 配置的 pom.xml 中设置了 JVM args:

        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <version>${spring-boot.version}</version>
             ...
          <configuration>
            <executable>true</executable>
            <fork>true</fork>
            <mainClass>${start-class}</mainClass>
            <jvmArguments>-Xms64m -Xmx128m</jvmArguments>
          </configuration>
        </plugin>
    

    gradle也有类似的设置

    bootRun {
       jvmArgs = ["-Xms64m", "-Xmx128m"]
    }
    

    【讨论】:

    • 感谢 Gaël,现在有了您的设置,这些应用程序在启动后需要 4Go,而不是超过 6Go。如果他们还有其他事情要做以改进这一点,我会稍等片刻,然后再验证您的有用答案。
    • 您的应用程序使用 MongoDb 和 Elasticsearch 选项,这些选项在嵌入 dev 时会消耗大量内存。与其从教程示例开始,不如考虑您真正需要哪些选项。
    猜你喜欢
    • 2017-05-01
    • 2018-12-14
    • 2019-03-13
    • 2018-08-06
    • 2021-08-26
    • 1970-01-01
    • 2017-12-31
    • 2021-07-03
    • 2010-10-15
    相关资源
    最近更新 更多