我有一个 12GB RAM 的 VPS,用来托管几个静态网站、2 个小型 Magento 商店和几个 WordPress 安装 - 总体来说没什么特别的,而且流量一般很低。
不过我注意到我的内存消耗相当高——请看一下下面的 free m 的结果:
total used free shared buffers cached
Mem: 12306384 12137728 168656 0 753360 8629744
-/+ buffers/cache: 2754624 9551760
Swap: 1048564 104 1048460
另请参见 Mumin 的屏幕截图 http://s13.postimage.org/q2xewgnef/Screenshot_4.jpg
现在我认为 9.5 GB 似乎与缓冲区/缓存有关 - 但我发现这个数字相当高。这是我需要担心的事情吗?还是它们最终会自行释放?(我曾在某处读到过,但我肯定不是专家)
另一点需要注意的是,Memcached 已经安装过一次并应用于我的一个 Magento 安装 - 它可能与它有关吗?
如果能得到一些专家的建议我将非常感谢。
答案1
你走进一家工厂,所有员工都在工作。你会想,“为什么员工不坐在沙发上无所事事呢?”嗯,这有点愚蠢。员工应该工作,而不是坐着等着工作。
如果你在想“我希望 RAM 现在空闲,以便以后使用”,那么这也是愚蠢的。你不需要 RAM 现在空闲,以便以后使用。你现在可以使用它和稍后使用它即可获得两全其美的效果。
它是不像你今天只用了 8GB明天你就可以开始使用 20GB 的内存。现在不使用内存没有任何好处,只是永远失去了机会。使用系统内存没有任何成本,因此没有理由不尽可能多地使用内存。
假设系统确实释放了更多内存。将会发生以下两种情况之一:
这些内存以后都不会被使用。在这种情况下,释放它们的努力就完全浪费了。
该内存稍后会被使用。在这种情况下,释放它的努力就白费了,因为它必须再次使用它。
现代操作系统只有在别无选择的情况下才会释放内存。这样做需要付出努力,而且当内存再次使用时,这种努力就必须撤消。相反,内存会直接从一种用途转换到另一种用途,而不会被释放。只有在特殊用例中才需要释放内存,在这种情况下,内存无法从一种用途转换到另一种用途,例如在中断上下文中。为此目的只需要非常少量的可用内存,通常为 64MB 或更少。