Apache + Nginx 压低内存的一点折腾

这篇日志注定很短。
现在使用的服务器是 ArchLinux + Apache 2.2.21 + Nginx 1.0.11 + MySQL 5.5.18 + PHP 5.3.8 的环境,详细的PHP探针可以在这里看到。
以上都是直接从Arch的原安装,然后一些组件是自己编译的,简单的方案在之前的这篇这篇日志中有提及。再加上ftp客户端和后台运行一个ntp进程,apache加载上mod_python组件,配置好了过后开机内存在72-75M,很满意。但是在运行一段时间(积累了一定量的网页请求)过后,内存就会直逼400,突发状况可以冲到接近500,就算空闲下来也有接近300,这个就有点不爽了。
于是折腾。

根据观察,处在前端的Nginx资源占用一直很小而且稳定,主要占用内存的就是若干httpd进程,那么就着手应对这个了。
在一番Google以及不断实验,重启若干次过后,找到了个人比较满意的配置方案如下~

编辑/etc/httpd/conf/extra/httpd-mpm.conf找到如下段落并且编辑为这样:

然后经过考虑,在/etc/httpd/conf/extra/httpd-default.conf中把KeepAlive配成了这样:

其实上面配置的主要一点是,减少httpd进程数量,以及缩短每个httpd进程的生存周期,让内存能在短时间内得到回收;总体来说就是牺牲一部分cpu来换取内存,因为目前vps上cpu基本处于空闲状态而性能上的主要矛盾是内存,所以还是很划算的。
此时,虽然突发内存仍然可以达到300+甚至400+,但在空闲下来的很短时间(大约几十秒)内,内存占用就会迅速降低,最后稳定在200左右。

下一步的计划是给wordpress做静态缓存,之前弄过几次,因为我用的是Nginx前端配apache动态所以一直不成功,把这个攻克下来之后性能上应该还会有一定的提升的说~

----UPDATE----
2011-12-20
在VPS上加上了Loli.lu项目的一个副本所以相当于多运行了一个服务器(端口不同),于是现在的格局是:前端Nginx,反向代理处于后端的Apache和loli.lu两个服务器,然后后端的两位都不是很省内存的说,loli.lu启动后占用大概100左右的内存,然后加上apache过后,可以稳定在400-450之间,因为有512的专享内存所以现在这样基本上是充分利用了。
不过我是觉得在性能和效率两方面都还有可以发掘的空间的说……
对了,因为现在的vps上有了两个wordpress并且本博客用了个简单的Hyper Cache插件做缓存,所以出于性能的考虑又调整了一下apache的设置,现在的配置参数如下:
/etc/httpd/conf/extra/httpd-mpm.conf:

/etc/httpd/conf/extra/httpd-default.conf:

现在可以稳定在这样的水平上了:

分享到:

拍拍手

何不考虑再看看:

{ 发表评论? }

  1. orvice China Google Chrome Windows

    vps用ArchLinux,丧心病狂

发表评论

电子邮件地址不会被公开。 必填项已用*标注

 

僕と契約して 夢喰いになてよ!
Merry