Datadog % Mem Usage 和 RSS Memory。

5
我们有一个运行在 Docker 容器中的 .net core 服务,用于处理用户上传的文件。一些传入的请求可能包含文件,文件大小高达 20 MB。该应用程序将文件保存为二进制 blob 到 Aurora DB 中,并执行其他处理步骤。 最近服务负载增加,datadog 显示 % Mem Usage 大约为 99%。 CPU 利用率只有约 2%。我们预计会出现内存泄漏,并导致容器内存耗尽。但是现在该进程似乎正在正常运行一段时间了。 此外,RSS 内存仅为 15%(4 GB 容器上的 650 MB)。我正在尝试理解这两个内存指标之间的差异,以及是否由于内存泄漏导致高内存使用率。该进程很关键,我们希望采取所有必要措施确保稳定性。我们正在分析内存优化方面的应用程序,但是目前还没有发现任何重大问题。
1个回答

6

我听起来和我们团队在Datadog上的经历非常相似。 有段时间,我们收到了关于pod内存不足的警报。 重新启动这些pod通常可以解决问题。 图表显示内存使用量持续一个月的稳定增长,直到达到峰值。

我们研究了这个问题并发现Datadog报告了已使用+缓存的内存,从而导致了不正确的指标。 操作系统正在缓存文件句柄。 通常,缓存内存可供使用,并在需要更多内存时由操作系统自动释放。 也可以手动清除它就像这里所示

要确认此内容,请进入容器并运行cat /proc/meminfo。 这将向您提供容器内存使用情况的详细信息。 这是我的结果:

MemTotal:       6504577 kB
MemFree:        1888762 kB
MemAvailable:   4357572 kB
Buffers:            310 kB
Cached:         2230122 kB

如您所见,MemAvailableMemFree大得多,并且有很多缓存数据存在于内存中。


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