.NET Core 如何限制内存使用?

4

我正在尝试在Kubernetes上运行dotnet core项目,并且想知道是否有一种方式可以限制内存使用量来自于dotnet core项目本身,就像我们可以为jvm项目设置限制一样。

我发现在Docker中有一个可选参数来设置内存限制:

docker run --memory="198m" xxx

在 Kubernetes 的 YAML 文件中,我们也可以设置内存限制:
resources:
  requests:
    # ~402 MB
    memory: "384Mi"
    cpu: "250m"
  limits:
    # ~1500MB
    memory: "1430Mi"
    cpu: "500m"

这不是真正的Kubernetes问题。 - switchboard.op
@switchboard.op 是的,这与Kubernetes没有太大关系,但我展示了我迄今为止尝试过的内容。 - Node.JS
1个回答

1
如果您使用的是dotnet core 2.0.2或更高版本,我相信它默认遵循Docker的cgroup限制。
所以在2.0.2+上都很好。只需在K8S中设置资源限制即可。

https://github.com/dotnet/coreclr/pull/13895


我见过这个失败的情况。目前正在处理 - .net core二进制文件没有遵守所在机器的内存限制。无论是因为K8S没有传达内存限制,还是因为.net core存在漏洞,都对此作出答案都不可行。 - speciesUnknown
你在 https://github.com/dotnet/coreclr 上提交了问题吗? - switchboard.op
1
它在 .NET Core 3 中已经修复,但据我所知,他们没有计划将其移植回去。 - speciesUnknown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接