我不是操作系统专家,我无法理解服务器的内存使用情况。我需要你的建议来理解以下内容:
我的服务器有8 GB RAM并作为Web服务器运行。 PHP,mySQL和Apache进程占用了大部分内存。当我重新启动系统后发出命令“free”时,我通常会看到这些内容:
total used free shared buffers cached
Mem: 8059080 2277924 5781156 0 948 310852
-/+ buffers/cache: 1966124 6092956
Swap: 4194296 0 4092668
显然,免费内存迟早会丢失,缓存内存会增加,我认为没有任何问题,因为操作系统决定缓存它。
我不明白的是大约1-2天后机器重启后,我会略微看到使用的交换内存增加。这是不是意味着服务器不再拥有空闲内存并使用IO代替?我如何理解导致这种情况的过程?
我向stackoverflow用户提出这个问题,因为如果我向托管服务提供商询问,我相信他们会要求更多钱来增加内存。 感谢。
答案 0 :(得分:4)
这是完全正常的。当机器启动时,大量服务也会启动。当他们运行他们的启动代码,读取他们的配置,等等,他们弄脏了一些内存页面。其中许多服务永远不会再运行。通过将此数据写入交换,操作系统完成两件事:
首先,如果它确实遇到内存压力,它可以丢弃页面而不必先写它们,因为它已经写过它们。其次,它可以丢弃页面以腾出更多可用内存来扩大缓存。
另一种方法是保留物理内存中未被触及的信息。这没有意义。