cloudfoundry java buildpack内存变化没有反映

时间:2017-06-06 17:38:15

标签: java cloudfoundry buildpack

我想在cloudfoundry java-buildpack中为我的java应用程序的内存设置进行更改。我试过这两种方式:

  1. 在manifest.yml中使用JBP_CONFIG_OPEN_JDK_JRE参数。如 建议在 {{3}}
  2. 在config \ open_jdk_jre.yml中进行此更改:
  3.   

    memory_calculator:
      版本:3.8.0_RELEASE
      repository_root:   " {default.repository.root} /存储器计算器/ {平台} / {架构}"   stack_threads:300
       memory_sizes:
      堆叠:2M
      元空间:160M
      堆:900M

    但是,在部署我的应用时,这些都没有反映出来。我正在使用最新的java-buildpack。

2 个答案:

答案 0 :(得分:1)

这取决于您正在使用的Java构建包的版本。

版本3.x

对于版本3.x,您可以设置一个env变量来配置内存计算器。喜欢这里。

https://github.com/cloudfoundry/java-buildpack/tree/3.x#configuration-and-extension

例如:

cf set-env my-application JBP_CONFIG_OPEN_JDK_JRE '{ memory_calculator: { memory_heuristics: { heap: 85, stack: 10 } } }'

然后,它将覆盖构建包中默认的内存启发式配置,特别是堆和堆栈权重。

一些注意事项:

  • 了解不同内存配置选项的作用是另一回事。您可以阅读有关here
  • 的内容
  • 这仅适用于OpenJDK,如果您使用不同的JDK,则配置选项略有不同。例如:Oracle的JBP_CONFIG_ORACLE_JRE。该名称反映了config file path & name
  • 如何为您的应用设置env变量并不重要。您可以像上面一样使用cf set-env,也可以在manifest.yml文件中设置env变量。两者都很好。

版本4.x

在4.x版本中,JVM内存设置的配置变得更加简单。

  

但是,如果您认为您的应用程序不需要这些JVM默认值,那么现在可以使用JVM选项直接配置这些内存区域。

https://www.cloudfoundry.org/just-released-java-buildpack-4-0/

这意味着您仍然通过env变量配置JVM设置,但您只需设置JAVA_OPTS并使用标准JVM配置选项。

例如:

cf set-env my-app JAVA_OPTS '-XX:ReservedCodeCacheSize=100M'

如果您愿意这样做而不是运行JAVA_OPTS,则可以在manifest.yml中设置cf set-env

希望有所帮助!

答案 1 :(得分:0)

我有一个类似的问题-stackThreads的设置被忽略。我不清楚

我最终下载了source code for JBP-4,发现它确实仍然支持JBP_CONFIG_OPEN_JDK_JRE(只是不是JBP-3中假定的所有内存设置)。 Daniel Mikusa在44396432中提供了最有价值的建议 ...使用Oracle JRE时,请使用JBP_CONFIG_ORACLE_JRE。
在“,”,[,{的所有排列中,这是有效的;

cf set-env APP_NAME JBP_CONFIG_ORACLE_JRE "{memory_calculator: {stack_threads: 202 } }"