1

我不是操作系统专家,我无法理解服务器的内存使用情况。我需要您的建议以了解以下内容:

我的服务器有 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 用户提出这个问题,因为如果我向我的托管服务提供商提出这个问题,我相信他们会要求更多的钱来增加 RAM。谢谢。

4

1 回答 1

4

这是完全正常的。机器启动时,也会启动大量服务。当他们运行他们的启动代码、读取他们的配置等等时,他们会弄脏一些内存页面。其中许多服务将永远不会再次运行。通过将此数据写入交换,操作系统完成了两件事:

首先,如果它确实遇到内存压力,它可以丢弃页面而不必先写它们,因为它已经写了它们。其次,它可以丢弃页面以腾出更多空闲内存来扩大缓存。

另一种方法是将几天内未触及的信息保留在物理内存中。这没有任何意义。

于 2013-09-09T06:37:37.083 回答