kubernetes Pod已用内存监控分析

 查看方法:grafana的取值监控指标,查监控显示的含义

  •  pod 实际已用内存监控指标为:container_memory_working_set_bytes:
  • container_memory_working_set_bytes = container_memory_usage_bytes - total_inactive_file(未激活的匿名缓存页)
  • total_inactive_file都属于file cache的一部分,并且这两个数据并不是业务真正占用的内存,只是系统为了提高业务的访问IO的效率,将读写过的文件缓存在内存中,file cache并不会随着进程退出而释放,只会当容器销毁或者系统内存不足时才会由系统自动回收。

参考文档:

 Cadvisor内存使用率指标 - OrcHome

从kubectl top看K8S监控

kubernetes上报Pod已用内存不准问题分析 - 云+社区 - 腾讯云

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes 中运行 Spring Boot 应用程序时,如果应用程序内存占用过高,可以采取以下步骤进行分析: 1.使用 kubectl top 命令查看 Pod内存使用情况。例如,执行以下命令: ``` kubectl top pod <pod-name> -n <namespace> ``` 其中,`<pod-name>` 是要查看的 Pod 名称,`<namespace>` 是 Pod 所在的命名空间。 2.如果发现 Pod内存占用过高,可以进入容器内部使用 jstat 命令查看 Java 进程的内存使用情况。例如,执行以下命令: ``` kubectl exec -it <pod-name> -n <namespace> -- /usr/local/openjdk-11/bin/jstat -gcutil <java-process-id> 1000 10 ``` 其中,`<pod-name>` 是要查看的 Pod 名称,`<namespace>` 是 Pod 所在的命名空间,`<java-process-id>` 是 Java 进程的 ID。 该命令将每秒输出一次 Java 进程的内存使用情况,共输出 10 次。 3.根据 jstat 命令输出的结果,分析 Java 进程的内存使用情况。可以关注以下几个参数: - S0:表示 Survivor 区域 0 的使用情况。 - S1:表示 Survivor 区域 1 的使用情况。 - E:表示 Eden 区域的使用情况。 - O:表示 Old 区域的使用情况。 - M:表示 Metaspace 区域的使用情况。 - CCS:表示 Compressed Class Space 区域的使用情况。 4.根据 jstat 命令输出的结果,分析内存使用情况是否存在异常。如果存在异常,可以根据异常情况进行优化,比如增加内存限制、优化应用程序配置等。 5.使用 Prometheus 和 Grafana 等监控工具,定期监控应用程序的内存使用情况,及时发现内存占用过高问题。可以结合 Kubernetes 的自动伸缩功能,自动调整 Pod 的副本数,以满足应用程序的内存需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值