我有VPSnoc的VPS,它展示了一些奇怪的行为。 当我从“PS人造”中总计%MEM列时,我得到23%左右,但是当我自由运行时,我得到了419580/524288 = 80%的使用。 这是很多RAM被非进程使用,比任何其他我pipe理的盒子,甚至我的朋友的VPS与相同的提供者。
我已经通过电子邮件发送了几次VPSnoc支持,但是他们似乎甚至不能理解这是系统上发生的一件非常奇怪的事情。
我不会抱怨,除了偶尔会发生内存不足错误(例如,当我尝试将apache2工作者设置为> 7个线程或> 8个同时连接时),这些都不是很好。
有没有什么办法,这可能是一个configuration问题,我可以修复/解决,或任何方式,这可能是正常的? 我失去了希望VPSnoc甚至会承认这个问题。
他们使用OpenVZ,如果有帮助。
编辑:我调整了一些MySQL的设置,这使得什么ps报告的RAM使用率从7%到4%,但免费报告的RAM使用量下降了大约20%。 我不再是出现内存不足的错误,但仍希望更好地理解报告。 free -m的当前输出是:
total used free shared buffers cached Mem: 512 320 191 0 0 0 -/+ buffers/cache: 320 191 Swap: 0 0 0
我现在明白可以存在的缓冲区/caching区别,但是这个输出没有显示任何缓冲区/caching区别(或者在此框中显示),并且不应该导致实际的内存不足错误。
我使用这个脚本来获得更多关于内存使用的信息: http : //www.pixelbeat.org/scripts/ps_mem.py
当您运行free ,“used”列的输出包含缓冲区和caching,这对于Linux机器来说是正常的。 Linux有最先进的内存pipe理器之一,所以它试图利用“免费”的内存来帮助你的系统的较慢的部分,如你的磁盘。 检查这个输出:
# free total used free shared buffers cached Mem: 1048576 924824 123752 0 102444 481004 -/+ buffers/cache: 341376 707200 Swap: 2096472 0 2096472
从这里看,系统看起来好像消耗了88%的内存,但其中大约52%是OS高速caching,另外11%是缓冲区。 这需要一些习惯,但Linux尝试最好使用“免费”的内存。
经过大量的debugging和与主机的对抗后,我几乎可以确定,这只是OpenVZ或者使用它的一个错误。 似乎ps中%MEM显示的是实际物理内存的百分比,而空闲则显示了我已分配的VPS RAM的数量。