了解 Linux 中的内存使用情况和数字

了解 Linux 中的内存使用情况和数字

我有一个运行 Apache 的 Web 服务器,其中有一些有趣的内存使用数字。

从顶部看,我有以下内存信息

Mem:  11679976k total, 10917568k used,   762408k free,   384320k buffers
Swap:  4194296k total,        0k used,  4194296k free,  1103728k cached

因此,减去缓冲区和缓存,大约有 9GB 左右的内存被使用。free -m 证实了这一点。

             total       used       free     shared    buffers     cached
Mem:         11406      10642        763          0        375       1077
-/+ buffers/cache:       9189       2217
Swap:         4095          0       4095

这个 Web 服务器非常繁忙,因此当我们关闭 Apache 时,我们预计内存使用量会大幅下降,但是它并没有下降多少。

我如何才能找到真正占用了所有内存的东西?从关闭 Apache 后的 tops 输出来看,没有人使用太多内存。这告诉我没有人使用该内存,但系统报告它正在被使用。

由于内存耗尽,我们的几台服务器崩溃了,因此我们正尝试更好地了解发生了什么。

答案1

查看/proc/meminfo/proc/slabinfo。该slabtop命令可能有助于您理解 slabinfo 的内容。

有一些缓存会消耗内存,但不会被 top / free 归类为缓存或缓冲区。想到的是 inode 和 dentry(特别是如果您有广泛的文件系统)。

相关内容