在具有 32 GB RAM 的机器上运行 MySQL。交换已占用 99%,并且大约有 200 MB 的 RAM 可用。MySQL 当然是罪魁祸首。当 RAM 和交换都完全填满时会发生什么?谢谢!
答案1
9/10OOM 杀手将会终止内存消耗最大的程序。否则您的系统将崩溃。
我假设你使用的是 Linux。
答案2
这取决于操作系统,但当内存耗尽时,某些东西就会死掉。更具体地说,某些东西对操作系统说“请给我更多内存”,而操作系统说“不”。
(这可能是因为只触碰一些已经被告知已分配的内存,导致页面写时复制,所以它并不像“调用内核内存分配器”那么简单)
从技术上讲,该过程可以处理这些故障并恢复,但实际上它会导致崩溃。
Linux 会尽力猜测要杀死的较佳候选程序是什么,而且我认为 Windows 也会这样做,但在您完全进入该状态之前,会以更干净的方式杀死某些程序,以便释放内存。
答案3
由于空闲的 RAM 是浪费的 RAM,因此 Linux 会尝试尽可能多地使用它。可能有很多缓存的磁盘页面和其他东西保存在 RAM 中,只是因为有空间。运行free -m
以查看计算机上的 RAM 使用情况。它还会显示应用程序在需要时可以使用的兆字节数(“空闲”列,第二行)。
答案4
尝试部署 New Relic 等自定义代理,查看哪些进程是不必要的,然后开始终止它们。这可以防止服务器崩溃