请注意,这种情况仍在发生。这不涉及到linuxatemyram.com -内存不用于磁盘缓存/缓冲器。这就是 NewRelic 中的样子——系统泄漏所有内存,用完所有交换空间,然后崩溃。在此屏幕截图中,我在服务器崩溃之前重新启动了服务器:
使用常见的用户空间工具无法确定泄漏的来源。现在有一个聊天室讨论这个问题:http : //chat.stackexchange.com/rooms/27309/invisible-memory-leak-on-linux
恢复“丢失”内存的唯一方法似乎是重新启动服务器。这是 Ubuntu Server 14.04、14.10 和 15.04 中重现的长期存在的问题。
内存使用不会显示在顶部,即使在杀死几乎每个进程(不包括内核进程和 ssh 之类的东西)后也无法恢复。查看顶部的“缓存内存”、“缓冲区”和“空闲”字段,它们没有用完内存,使用的内存“丢失”并且无需重新启动就无法恢复。
尝试使用这个“缺失”的内存会导致服务器交换、缓慢爬行并最终冻结。
root@XanBox:~# top -o +%MEM
top - 12:12:13 up 15 days, 20:39, 3 users, load average: 0.00, 0.06, 0.77
Tasks: 126 total, 1 running, 125 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.1 hi, 0.0 si, 0.0 st
KiB Mem: 2,040,256 total, 1,881,228 used, 159,028 free, …
Run Code Online (Sandbox Code Playgroud)