首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用java版本的MaxRAMPercentage在容器上设置1.8.0_282

用java版本的MaxRAMPercentage在容器上设置1.8.0_282
EN

Stack Overflow用户
提问于 2021-05-07 21:20:49
回答 1查看 1.8K关注 0票数 4

我正在和Docker和Kubernetes合作做AWS (cloudformation )

Yaml

代码语言:javascript
复制
...
resources:
  requests:
    memory: "4Gi"
    cpu: "0.5"
  limits:
    memory: "4Gi"
    cpu: "0.5"

Dockerfile

代码语言:javascript
复制
FROM amazonlinux:latest
RUN yum -y install java-1.8.0
EXPOSE 8103
ADD myapp.jar
ENTRYPOINT ["java","-XX:MinRAMPercentage=50.0","-XX:MaxRAMPercentage=80.0","-jar","myapp.jar"]

跟随你可以从我的荚中找到java "1.8.0_282“的版本

代码语言:javascript
复制
bash-4.2# java -XX:+PrintFlagsFinal  -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
 intx CompilerThreadStackSize                   = 0                                   {pd product}
uintx ErgoHeapSizeLimit                         = 0                                   {product}
uintx HeapSizePerGCThread                       = 87241520                            {product}
uintx InitialHeapSize                          := 67108864                            {product}
uintx LargePageHeapSizeThreshold                = 134217728                           {product}
uintx MaxHeapSize                              := 1073741824                          {product}
 intx ThreadStackSize                           = 1024                                {pd product}
 intx VMThreadStackSize                         = 1024                                {pd product}
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

我读到这个博客时,作者解释说:“如果您运行的是Java8UPDATE 191或更高版本,或者Java 10、11、12、13等,则不能使用UseCGroupMemoryLimitForHeap选项,而应该使用默认激活的UseContainerSupport。”

为此,我在入口点指令中添加了"-XX:MinRAMPercentage=50.0“、"-XX:MaxRAMPercentage=80.0”选项。

代码语言:javascript
复制
ENTRYPOINT ["java","-XX:MinRAMPercentage=50.0","-XX:MaxRAMPercentage=80.0","-jar","myapp.jar"]

不幸的是,UseContainerSupport值在我的吊舱上没有改变,正如您可以看到的

代码语言:javascript
复制
bash-4.2# java -XX:+PrintFlagsFinal  -version | grep -E "UseContainerSupport | InitialRAMPercentage | MaxRAMPercentage | MinRAMPercentage"
double InitialRAMPercentage                      = 1.562500                            {product}
double MaxRAMPercentage                          = 25.000000                           {product}
double MinRAMPercentage                          = 50.000000                           {product}
  bool UseContainerSupport                       = true                                {product}
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

我还尝试将JAVA_OPTS添加到YAML中,如下所示,但没有任何更改

代码语言:javascript
复制
env:
  - name: JAVA_OPTS
    value: "-XX:MinRAMPercentage=50.0 -XX:MaxRAMPercentage=80.0" 

最后的问题是:-)

如何并在何处设置-XX:MinRAMPercentage和-XX:MaxRAMPercentage选项以修改MaxRAMPercentage的默认值?我想使用3Gi的内存4Gi专用(关于yaml)

感谢每个人

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 21:58:42

请将env变量从JAVA_OPTS更改为JAVA_TOOL_OPTIONS。这对我和Java8起了作用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67441806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档