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

Pra*_*ewa 2 linux memory

我正在维护一个管理 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
Run Code Online (Sandbox Code Playgroud)

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

A.B*_*A.B 10

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

另外我相信java在看到更多可用内存时自然会使用更多内存,并且需要大量参数来防止它这样做。

如果某些监控工具因此而对内存使用情况发出警报,您应该更正监控工具以提供实际可用内存的正确报告(例如:此处免费告诉您 5584 mb 可用,而 156 mb 空闲除外)。

附带说明一下,157mb 的交换正在使用中这一事实不是问题,只要它没有换入和换出(可以使用 进行检查vmstat)。这意味着为实际活动提供了 157mb 的更多内存。这仍然是值得关注的事情。