Apache 2.4 或 CentOS 上的简单错误

Apache 2.4 或 CentOS 上的简单错误

我已经处理这个问题好几天了,最后我得出结论,这肯定是一个 bug... 很不幸。我希望借助您的专业知识,我可以确定这是 Apache、CentOS 7 还是其他什么东西上的 bug。

我有一个全新安装的 CentOS 7,带有 LAMP。Apache 的最新版本是 2.4,使用 prefork 作为 MPM。我可以重现“错误”的服务器有 2 GB 的 RAM 和 256 MB 的交换分区,并运行 2 个 vCPU。这个错误不会发生在 CentOS 6 上,所以我认为这个错误是 CentOS + Apache 的混合体,不知道哪个是罪魁祸首。

这就是问题所在:当我启动 Apache 时,一切都运行正常,几秒钟后,进程httpd开始无缘无故地使用交换内存 - 我稍后会告诉你我是如何知道这一点的。我的第一个想法是内存不足。所以我执行了free,令我惊讶的是,我看到的是:

图像

您说得对,有 1.8 GB 的可用 RAM,而我的服务器由于某种奇怪的原因正在交换。因此我执行top-> F -> 添加了 SWAP 字段。这是我得到的结果:

图像

是的,只有 Apache 需要交换。因此我检查了一下,httpd.conf并将默认值更改为以下值,这有助于减少交换使用量:

KeepAlive Off

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20

ServerLimit       60
MaxRequestWorkers 60

MaxConnectionsPerChild 4000
</IfModule>

通过上述配置,在具有大量可用内存的网络服务器中一切都应该正常工作。

这是一个非常容易重现的“错误”,我想很多人都应该遇到过它......不仅仅是我......那么为什么在我搜索的所有论坛上都没有人发布过这样的内容呢?

是的,当然,有很多教程告诉您如何调整 apache,服务器上的其他东西如何导致这种交换...是的,很难过...但是上面这个案例非常清楚,没有什么花哨的,可能周围有很多好人正在为此而烦恼,不知道是什么导致了他们的服务器交换。

值得一提的是,在重现此错误时,此服务器并非“空闲”,我让它每分钟接收几百个请求,以便检查此错误。需要注意的是,这些请求始终非常“轻量”,服务器始终有 1.8 GB 的可用 RAM。

相关内容