网站故障处理记实:apache引起的麻烦(2)
来源:互联网 时间:2008-09-26 17:04:00
apache引起的麻烦?
这个结果表明请求数比较大但却没有得到适时的响应,再看一下这些请求都是发往那些服务端口,只需运行netstat–anp|grep–vunix,发现绝大部分请求是针对80端口的。由这个现象基本可以断定是apache引起的麻烦。那好,我就从这里着手。关apache服务再启用,这时察看httpd进程,马上就是256.既然这样,我就在配置文件httpd.conf加入下面的代码块:
<IfModuleprefork.c>
StartServers10
MinSpareServers10
MaxSpareServers15
MaxClients1500
ServerLimit2000
MaxRequestsPerChild10000
</IfModule>
执行apachectl–t,报错,警告说MaxClients超过256,以至于apache服务不能正常运行,该小一点呢?好,改成150,运行后,查httpd进程数,刚好150。用浏览器访问论坛,还是十分的缓慢。看来得朝大的方向改,否则瞬间apache达到最大连接数,就不再响应新的请求。从前面的操作(把MaxClients的值改大超过256)可以知道,必须重新编译和安装apache才可以达到目的。当时曾经尝试把apache置于worker模式,但在编译时涉及到php,不想再节外生枝,就不再继续。我用的apache版本是httpd-2.2.6,进安装包所在的目录(如我的目录是/root/httpd-2.2.6,即解压httpd-2.2.6.tgz后生成的目录),修改文件server/mpm/prefork/prefork.c,把第77行的值改成1500,如下图所示:
然后再编译,运行和安装。再使配置文件httpd.confMaxClients的值为1500,运行apachectl–t检查语法是否正确,无误后启用apache服务apachectlstart.现在,我们再回过头来察看apache的进程数,基本上在170-400这个范围,并且在不停的变化,隔设定的1500这个值还差得远;另外那些等待的请求值也降低了,这意味apache能正常响应用户的请求。在浏览器输入论坛的url,速度正常,再请其他朋友帮着测试,一切正常。