我知道“空闲RAM是浪费RAM”的概念。我的问题是,操作系统如何快速有效地释放缓存的RAM,以便应用程序在使用高峰时有足够的RAM。
我们有一个在linux中托管的web应用程序。我们通常有10-20%的记忆利用率。但我们看到,当调用代码的某些部分时,峰值高达100%。(代码已被优化).I希望在发生这种情况时触发一封电子邮件。我应该编写一个脚本来监视内存使用情况,包括缓存,还是仅仅是应用程序内存?
当linux中出现内存不足错误时,是否意味着缓存内存为零,并且所有RAM都已分配给应用程序?
发布于 2017-10-09 11:19:26
是的,这意味着操作系统已经清除了用于文件系统缓存的所有内存。基本上,您的webserver/app是对一定数量的内存执行malloc,内核释放内存并将其分配给应用程序使用。这是一个原子调用,根本不阻止应用程序。
您只需在服务器中增加内存或处理较少的连接。
发布于 2017-10-09 13:20:22
当像OOM杀手这样的OOM事件发生时,所有的RAM和交换都会被使用,缓冲区和缓存是最少的,而且性能已经很差了。将内存使用保持在100%以下。
在Linux上,您可以使用解释/proc/meminfo。
MemAvailable是对不需要交换就可以分配多少资源的估计。
MemFree + Buffers + Cached实际上是免费的。
https://serverfault.com/questions/877565
复制相似问题