【问题标题】:How to find maximum memory for pod?如何找到 pod 的最大内存?
【发布时间】:2018-12-25 02:11:02
【问题描述】:

我有一个在 kubernetes 中运行的 JVM 应用程序。当我运行kubectl top pod 时,我可以看到以下内容

mypod1                    12m          6035Mi
mypod2                    11m          6129Mi
mypod3                    11m          6334Mi

我想知道 6GB 内存是好是坏。我的 kubernetes 部署 yaml 没有指定任何资源

问题

  • 我怎样才能知道它可以达到的最大数量?
  • 如何确定 jvm 是否运行良好?
  • 是否有一个分析器可以连接到在 pod 中运行的 jvm?

【问题讨论】:

    标签: memory kubernetes jvm


    【解决方案1】:

    问题 #1:“我怎样才能找出它可以达到的最大数量?” 答:如果没有在部署中配置resources,Pod 将具有 BestEffort 的 QoS 类,并且可以使用运行它的节点上可用的尽可能多的内存。另请参阅我对这个问题的回答:How can I tell how much RAM my Kubernetes pod has?

    恕我直言,至少指定最小 (-Xms) 和最大 (-Xmx) JVM 堆总是一个好习惯...

    问题 #2:“我怎样才能知道 jvm 是否运行良好?” 答:您可以从启用 JMX 开始,然后使用它来收集 JVM 和应用程序指标。除了像JolokiaPrometheus JMX Exporter 这样的JMX-to-HTTP 桥,它也是直接通过JMX 连接的一个选项。一种方法是:

    • 通过配置这些 JVM 启动参数来公开 JMX:

      -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.rmi.port=4444 -Djava.rmi.server.hostname=127.0.0.1
      

    请注意,这会附加其他动态 RMI 端口并设置 RMI 服务器的主机名。

    • 将本地端口转发到 pod 上的这些端口:

      kubectl --namespace=<namespace> port-forward <pod-name> 4444:4444 1099:1099
      
    • 在本地启动一个工具,该工具可以通过 JMX 连接到 pod 中的 JVM(jconsole、jvisualvm、jmc...基于您可用的内容)。 JMX URL 将是:

      service:jmx:rmi://127.0.0.1:4444/jndi/rmi://127.0.0.1:1099/jmxrmi
      

    问题 #3:“是否有一个分析器可以连接到在 pod 中运行的 jvm?” 答:简短的回答是“是”。我使用 JProfiler 通过端口转发远程分析在 k8s 上运行的 Java 应用程序。 (我不隶属于 JProfiler,也没有推广它——它只是我帮助的团队获得许可的工具)

    【讨论】:

      【解决方案2】:

      您可以使用 Vertical Pod Autoscaler 根据容器的消耗情况自动更新 CPU/内存限制。

      要获取 JVM 指标,我建议在您的服务器中安装一些 prometheus 插件并抓取指标。然后你可以看到有多少对象是存活的和世代信息,以便更好地了解内存使用的原因以及如何控制它。

      您可以通过使用kubectl proxy 暴露相关端口来连接分析器

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-19
        • 1970-01-01
        • 2011-08-15
        • 2020-02-03
        • 2023-03-20
        • 2017-07-03
        • 1970-01-01
        相关资源
        最近更新 更多