Apache 在低端服务器上的性能调整
出自S60 用户全球通
西域浪子原创, 版权不保留,但请注明出处。
如果你的机器只有PIII CPU,128MB内存,10GB硬盘.默认的FC6的Apache服务器在运转很短时间后就会占据全部内存,系统开始进行大量的Swapping内存交换.导致系统颠簸,基本不能使用,外界访问延迟加大,甚至出现超时错误。
主要原因:
- 默认的FC6的"服务器安装"仍然有许多系统服务不需要
- 默认的版本使用prefork MPM,每个客户端需要一个工作进程
- Apache服务器工作进程对静态叶面需要3MB内存.对于PHP的动态叶面需要15MB左右,甚至更多
- Apache服务器工作进程占用的内存随着使用时间逐渐加大,不会自动释放内存
- Apache服务器工作进程不会自动重起释放内存
- 默认的Apache服务器工作进程数设置太大,过多的进程会占据全部内存
分析解决方法:
- 封掉所有无用的系统服务,基本系统占掉50MB内存
- 停掉Apache后系统有大约120 - 50 = 70MB的可用内存
- 系统能够支持的Apache进程数为 70MB/15MB = 5
- 需要定期杀掉并重启内存占用过大的进程。
Apache参数的调整:
- 编辑 /etc/httpd/conf/httpd.conf
<IfModule prefork.c> StartServers 3 #初始启动的服务器工作进程数量 MinSpareServers 1 #最小空闲的服务器工作进程数量 MaxSpareServers 10 #最大空闲的服务器工作进程数量 ServerLimit 5 #最多启动的服务器工作进程数量 - 根据我们的计算 MaxClients 5 #最多并行处理的客户端数量 - 根据我们的计算 MaxRequestsPerChild 1000 #每个服务器进程在处理xxx个请求后就死掉重启 </IfModule>
经过这番调整,系统的内存开销基本能够控制在128MB之内。经过2天试运行,没有再出现频繁交换导致无法访问的问题
本人用旧机器做服务器,这些调整也是被逼无奈,网站不可能提供大用户量的并行访问,但作为小型网站。一时倒也可以转下去。
后来有对 Mediawiki 性能调整了一下,主要是加上PHP的缓存,发现系统能比较平稳的运转
