Apache性能优化—内存释放


Apache进程在使用内存时,是“渐长”的。也就是说,直到这个进程死掉,使用内存的数量是一直增长而不会减少的。这样的话,apache进程使用内存的多少,就决定于你的应用程序最大使用内存量了。

KeepAlive参数

KeepAliveTimeout 这个参数决定了,在什么都不做之前,一个http进程能够等待多长时间?设想一下,如果keepalive设置为on,而 KeepAliveTimeOut设置为一个比较大的数字,apache占用内存会很快的增长。这是因为,一个apache进程完成了一个任务(并达到了一定的内存占用,想一下“渐进”模式),并不会马上退出,而是等待一个KeepAliveTimeOut时间。假设用户的链接请求持续不断的到来,则积累起来的无用的apache进程就会相当多,直到timeout,这些进程才会被杀死。

但是,KeepAlive的确对于静态的文件,比如图像文件的传送是很有效的,因此,KeepAlive要设置为On,但是KeepAliveTimeOut要设置的小些,比如5s

MaxRequestsPerChild

这个参数是说,Apache进程在处理了多少个请求之后,必须退出,重新开始,以免在处理中的内存问题。

对于php脚本来说,把这个参数设置的小一些是有好处的,可以避免程序使用的内存持续增长对Apache带来的压力:让这个参数定期释放内存,因为php是在脚本执行完毕后,自动释放只用的资源(内存)的。

比如设置为50?如果太小的话,重新产生一个Apache进程也是要消耗资源的,这是一个平衡问题。

Archives