尽管我的系统上有足够多的可用 RAM,但 OOM 杀手似乎正在杀死一些东西:
27 分钟和 408 个进程后,系统再次开始响应。大约一个小时后我重新启动它,此后不久内存利用率恢复正常(对于这台机器)。
经过检查,我的盒子上运行了一些有趣的进程:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
[...snip...]
root 1399 60702042 0.2 482288 1868 ? Sl Feb21 21114574:24 /sbin/rsyslogd -i /var/run/syslogd.pid -c 4
[...snip...]
mysql 2022 60730428 5.1 1606028 38760 ? Sl Feb21 21096396:49 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/lib/mysql/mysql.sock
[...snip...]
Run Code Online (Sandbox Code Playgroud)
这个特定的服务器已经运行了大约。8 小时,这是仅有的两个具有这种……奇数值的过程。我怀疑是“其他事情”正在发生,可能与这些荒谬的价值观有关。具体来说,我认为系统认为内存不足,而实际上并非如此。毕竟,它认为 rsyslogd 始终使用 55383984% 的 CPU,而无论如何在该系统上理论最大值为 400%。
这是具有 768MB RAM 的完全最新的 CentOS 6 安装 (6.2)。任何有关如何弄清楚为什么会发生这种情况的建议将不胜感激!
编辑:附加虚拟机。sysctl 可调参数..我一直在玩swappiness(它是100),我还在运行一个非常糟糕的脚本,它转储我的缓冲区和缓存(vm.drop_caches 是3)+同步磁盘每个15分钟。这就是为什么在重新启动后,缓存数据增长到正常大小,但随后又迅速下降的原因。我认识到拥有缓存是一件非常好的事情,但是直到我弄清楚... …