服务器正在使用交换空间且剩余大量资源

服务器正在使用交换空间且剩余大量资源

我有一台 Centos 7,交换空间为 256 MB。我一直都有至少 1GB 的可用 RAM 内存,我的 CPU 使用率从未超过 60%。但每次我检查交换空间使用情况时,它都使用了大约 200 MB!我的 Swappiness 是 30,一切运行顺利。但我真的很好奇这个 Centos 到底是怎么回事。

我在上面运行 LAMP,仅此而已,没什么特别的。那么,我该如何摆脱这种高交换使用率?是否可以检查谁/哪个应用程序正在写入/读取它?

根据要求,free -m输出:

              total        used        free      shared  buff/cache   available
Mem:           1991         171        1684           2         134        1771
Swap:           255         239          16

我发现 Apache 交换了很多内存。我有很多可用内存,为什么还要交换内存?请查看下图。

图像http://tinypic.com/view.php?pic=r23kh2&s=8#.Vfr74PlViko

所以不允许我发布图片,所以我将其发布在上面的链接中。

答案1

简而言之,这是正常行为,对您有益。您有更多内存用于将来的 I/O,而您可能永远不会使用交换中的这些页面。

这个问题回答得非常好这里

交换分区会以某种方式减慢系统速度,这是一个常见的误解。没有交换分区并不意味着内核不会从内存中清除页面,它只是意味着内核在清除哪些页面方面有更少的选择。

答案2

这就是我要开始的地方

当我们发现有关您的系统的更多信息时,我会进行编辑。我会以评论的形式发布,但格式不对。

什么是使用 swap swap_使用情况.txt

获取每个守护进程的实际(或接近实际)内存使用情况 py_mem.txt

您还应该记下任何包含旧文件的 tmpfs 文件系统。它由 swap 支持,如果您不访问这些文件,它将被交换出去。

[更新] 根据您的编辑,每个 apache 进程大约 10MB 表明您正在运行 prefork 并且可能在其后面运行 mod_php 或类似的脚本语言。这是常见的虽然并不理想如果您使用的是 php,则适用于 Apache。您可以通过优化代码来减少使用量。您还可以通过减少 MaxRequestsPerChild 来减少平均内存使用量,但这也可能会降低服务器的性能。

相关内容