估算Apache所需要的内存

来源:芽雨快跑  时间: 2009-03-25 19:21:45  浏览: 29257 次  评论: 2 篇  
Tags : apache 内存  

    精确的计算所需要的内存是很困难的,为了尽可能的精确,需要观察类似线上环境下观察服务器的负载和进程。毕竟如果不同的服务器配置和装的模块是有差异的,只有查看自己才可靠,所谓核心的东西要掌握在自己手里大概如此。。。。

    一个简单可靠的法子是,在压力测试时,找到httpd进程,查看一个进程使用了多少的内存,然后看看总的进程,即可估算一下。

    比如:
    ps aux | grep httpd
    查看每个httpd进程使用了多少内存,数字在第四列,格式为百分之几。

    ps aux | grep httpd | wc -l
    得到一共有多少进程,记得结果要减1,因为grep httpd也在结果中。

    free
    查看服务器内存总量,单位为K

    然后就可以估算了。比如一个进程占2%的内存,有27个httpd,总内存为4148424。那就是:
php -r "echo 0.002*4148424*26/1024;"
    结果为210.66215625M内存,这个只仅仅是为apache分配的。还得给其它服务留出足够空余的内存。而且考虑高峰期可能会比平时大12倍,这个时候仅仅考虑Apache就够了,嘿嘿。曾经出现过因磁盘IO过高导致服务器崩溃的场景。

    如果怎么算都不能让服务器有空余的内存,就得考虑限制最大进程数了。使用MaxClient指令可以用来限制。

    以上说得有误之处,还请各位指点!

朋友的回复:
呢称:skywalker  个人主页:http://www.x-sword.org  时间: 2010-02-24 20:46:15
首先,感谢你关注《中国城管血泪史》,我是博客作者,想和你做一个友情链接
呢称:11  个人主页:http://www.mudone.com  时间: 2009-03-26 09:28:58
是否还要考虑下prefork 和 worker 的差异 :)
芽雨回复:

呵呵,看来本文只适合prefork:)
要不您也来写一写?
© 2004 - 2018 芽雨快跑 - 本页面所有内容,未经芽雨许可,欢迎转载,请注明出处

京ICP备09017802号