这与以下内容相关:内存使用率达到 72% 时溢出
看起来是同一个问题,但问题略有不同:我的内存去哪儿了?我的内存使用率为 18%,我的 OOM Killer 每 10 分钟就会杀死 mysqld 一次。
我收集到了一些信息:
1- 谢谢https://serverfault.com/a/619681/182343我发现 OOM Killer 的报告显示 DMA35 + DMA + 正常使用率为 96%(报告https://pastebin.com/UJUiSsSi)...所以有一个问题...
2- 来自 OOM Killer 的进程列表:https://pastebin.com/yYTD4QzW
3- free、top、htop 和其他工具显示内存使用率最高为 18%。以下是内存使用率排名(https://pastebin.com/DEDV1HWb)
4- free -m 没有说明 RAM 问题:
total used free shared buff/cache
available
Mem: 6809 414 470 201 5924 5825
(我添加了一些交换,因为这个虚拟机上没有交换,但没有任何变化,没有使用交换)
5(编辑):感谢 Daniel Gordi,我清理了我的 buff/cachefree && sync && echo 3 > /proc/sys/vm/drop_caches && free
并使用 手动运行了 oom-killer echo f > /proc/sysrq-trigger
。而且,WTF,oom-killer 内存报告 (DMA35 + DMA + Normal) 显示我的预期内存使用率:18%!我一直以为这buff/cache
意味着当操作系统需要时可用...
为何以及在哪里吃公羊?
(我真的希望能得到一些帮助,因为自从出现这个问题以来,我的生产服务器真的不稳定:(谢谢)
答案1
尝试使用 查找哪个进程使用了您的 RAM ps aux --sort -rss
。
对于服务器的输出,free -m
大多数 RAM 都已缓冲/缓存。尝试使用以下命令清除缓存:
# free && sync && echo 3 > /proc/sys/vm/drop_caches && free
答案2
如果有人来这里寻求解决方案,这是一个更新:
我回滚了所有配置修改,并重新重启了服务器。2 个月以来,服务器运行良好,问题也消失了。
不确定这里发生了什么...