Datadog%Mem使用情况和RSS内存



我们有一个.net核心服务在docker容器中运行,用于处理用户上传的文件。有些传入请求的文件大小高达20 MB。该应用程序将文件作为二进制Blob保存到Aurora DB中,并执行其他处理步骤。最近,服务负载增加,数据狗显示%Mem使用率约为99%。CPU利用率仅为2%左右。我们预计会发生内存泄漏,从而导致容器内存不足。但这个过程似乎在一段时间内运行良好。此外,RSS内存仅为15%(4GB容器上为650MB(。我试图理解这两个内存指标的差异,以及内存泄漏导致的高内存使用率。这一进程至关重要,我们希望采取一切必要步骤确保稳定。我们正在分析内存优化的应用程序,但到目前为止还无法确定任何主要内容。

这听起来与我们的团队使用Datadog所经历的非常相似。有一段时间,我们收到了我们的吊舱内存不足的警报。重启这些吊舱通常可以解决问题。图表显示,在达到峰值之前的一个月里,内存使用量稳步增加。

我们深入研究了这个问题,发现datadog报告使用了+缓存内存,这导致了不正确的指标。操作系统正在缓存文件句柄。通常,缓存内存可供使用,当需要更多内存时,操作系统会自动释放缓存内存。也可以手动冲洗,如图所示。

要确认这一点,您可以进入容器并运行cat /proc/meminfo。这将为您提供容器内存使用情况的细分。这是我得到的

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

正如您所看到的,MemAvailableMemFree大得多,并且内存中有很多缓存的数据。

最新更新