繁体   English   中英

没有 memory 限制的 Kubernetes pod 中 .net GC 的性能

[英]Performance of .net GC in Kubernetes pod without memory limit

我正在检查缩放问题,我们怀疑它与 memory 有关,但在本地机器上运行负载测试后,它似乎没有 memory 泄漏。 我们在 Kubernetes 中托管 .net 核心应用程序,资源设置 800mi 请求 memory 无限制。 根据这篇文章的描述

垃圾收集的触发发生在,系统物理 memory 低并从操作系统收到通知。

那么这是否意味着如果我们没有设置 memory 限制,直到我的节点在 memory 上处于低位之前,GC 不太可能启动,它最终会占用节点中的大部分 memory?

是的,这正是 .NET 和其他吊舱可能发生的情况。

始终设置 memory 和 CPU 限制,因为这可能会影响其他 pod 或为命名空间配置默认 Memory 请求和限制

@Martin 是对的,但我想就这个话题提供更多见解。

Kubernetes 最佳实践:资源请求和限制是一个很好的指南,通过详细的解释和示例来解释这些机制背后的想法。

此外, Managing Resources for Containers将为您提供有关以下方面的官方文档:

  • 请求和限制

  • 资源类型

  • Pod 和 Container 的资源请求和限制

  • Kubernetes 中的资源单元

  • 如何调度具有资源请求的 Pod

  • 如何运行具有资源限制的 Pod 等

请记住,在计算每个容器需要多少资源时,制定一个好的策略非常重要。 理想情况下,您的 pod 应该使用您请求的资源量,但这几乎是不可能实现的。 如果使用率低于您的要求,那么您就是在浪费资源。 如果它更高,您将面临性能问题的风险。 将请求值上下 25% 的余量视为一个好的起点。 关于限制,实现良好的设置将取决于尝试和调整。 没有适合每个人的最佳值,因为它取决于与应用程序本身相关的许多因素、需求 model、对错误的容忍度等。

最后,您可以使用metrics-server获取 pod 的 CPU 和 memory 使用情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM