即使清除了缓存,Linux中的可用内存也总是会下降

即使清除了缓存,Linux中的可用内存也总是会下降

我正在维护一个管理 100 TPS API 流量的 Linux 服务器。最初,它只有 8GB 内存。我们最近将内存加倍,并将 JVM 内存消耗上限也加倍。可用内存仍然很低。

free -m
              total        used        free      shared  buff/cache   available
Mem:          15885        9909         156          15        5819        5584
Swap:         18431         127       18304

如您所见,可用内存为 156MB。当缓存被清除时,free内存会增加。但在几个小时内它仍然下降到相同水平。这是正常行为还是我需要再次增加内存?

答案1

这是正常行为。任何未使用的内存将用于缓存,以提高整体性能。如果其他用途需要该内存,则会自动释放该内存。除了检查此特定行为并将其显示给某人之外,您不必删除缓存。如果内存保持空闲,那么您的磁盘 I/O 活动可能会增加,并且您的应用程序可能会变得更慢。

我也相信爪哇当它看到更多可用内存时,自然会使用更多内存,并且需要很多参数来防止它这样做。

如果某些监控工具因此对内存使用情况发出警报,您应该更正监控工具,以给出实际可用内存的正确报告(例如:这里的 free 告诉您除了 156mb 可用内存之外还有 5584mb 可用内存)。

附带说明一下,只要不进行换入和换出,157mb 的交换空间正在使用中就不是问题(这可以通过以下命令进行检查)vmstat)。这意味着 157mb 的内存可用于实际活动。这仍然是值得关注的事情。

答案2

Linux 内核使用尽可能多的内存作为缓冲区或高速缓存。这加速了系统并且完全是有意的。您真正要查找的号码位于标题为“可用”的列中。如果应用程序需要更多内存,操作系统将释放一些缓存以供该应用程序使用。

相关内容