简单的bug在Apache 2.4或CentOS上

我正在处理这个问题的日子,碰巧我得出结论,它必须是一个错误…不幸的是。 我希望借助您的专业知识,我可以肯定地知道这是Apache,CentOS 7还是其他的问题。

我用LAMP有一个新的最小的CentOS 7安装。 Apache的最新版本是2.4,prefork是MPM。 我可以重现“错误”的服务器有2 GB的RAM和256 MB的交换分区,并运行2个vCPU。 CentOS 6没有发生这个bug,所以我觉得这个bug有一些CentOS + Apache的组合,不知道哪一个是有罪的。

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

图片

你是对的,1.8 GB的可用内存和我的服务器,由于一些奇怪的原因,交换。 所以我执行了top – > F – >添加了SWAP字段。 这是我得到的:

图片

是的,Apache是​​唯一交换。 所以我检查了我的httpd.conf ,并将默认值更改为下面的内容,这有助于减less交换使用情况:

 KeepAlive Off <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 60 MaxRequestWorkers 60 MaxConnectionsPerChild 4000 </IfModule> 

使用上面的configuration,一切都应该工作正常运行与大量的可用内存的networking服务器。

这是一个非常容易的“错误”重现,我认为很多人应该面对它…不仅仅是我…所以为什么在所有的论坛search没有人发布这样的事情呢?

是的,当然,有很多的教程告诉你如何调整Apache,服务器上的其他东西可能会导致这个交换…是啊,悲伤…但上面的情况是非常清楚,没有什么幻想,可能是一堆周围的好伙计正在旋转,不知道什么是造成他们的服务器交换。

一个好的方面是,这个服务器在重现这个bug的时候不是“闲置”的,我每分钟收到几百个请求,所以我可以检查这个bug。 说这些请求总是非常“轻”,服务器总是有1.8 GB的可用RAM是很重要的。