Apache假死问题解决,狂喜中

该昵称很风骚 2009-08-18 01:24:30
让我头痛的Apache假死问题今日终于得到解决。惬意中...

我Apache的症状:

1,最开始是每过1天或2天就死掉(页面没任何提示,一片空白)

2,后来我改了mpm模块下的一些参数,变成每小时死一次,

我装好Apache的原始mpm模块参数如下:

<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>

#ThreadsPerChild 250
MaxRequestsPerChild 0


服务器是在重装之后,重新配置环境之后出问题的,之前是另一个人在维护,我又是菜鸟一个

出问题后,找遍了几乎所有的资料,都试过了,无果。貌似都说MaxRequestsPerChild 和ThreadsPerChild 应该放在mpm模块内部,而且ThreadsPerChild 是mpm_worker_module模块特有的,但我用的是mpm_prefork_module,放在其内部应该是不适合的。我将原始的放在外部的MaxRequestsPerChild 注释掉,直接用里面的,而且设置了值,从1到500都设置过,内存使用依然触目惊心,Apache不到一小又死掉。

我试过吧其下httpd-mpm.conf里的所有模块有一块儿用上,无果;也试过只用worker和prefork,亦无果;也分别单独试过,无果;各个情况下都设置了那些参数的值,加大或减小,无果。很是头痛。

今天突发奇想,能不能将原始的#ThreadsPerChild 250 和MaxRequestsPerChild 0就放外面再改下呢,于是将先前注释掉的改回来,而且设置上值:ThreadsPerChild 100 MaxRequestsPerChild 1000

此外,我仍然用默认的prefork,改成:

<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 15
ServerLimit 1000
MaxClients 500
MaxRequestsPerChild 1000
</IfModule>

重启Apache,ok成功了。这里还说明一下,但MaxRequestsPerChild的值小于100的时候,httpd.exe的内存使用率绝对不会超过100,000k的,我最开始设置成20,其httpd.exe不超过50,00k就自动被kill掉,又立马自动生成一个,我一步一步的测试,最后定在1000,其实你屋里内存很大的话,这个值还可以增加的,有人还设置成10000.

恩,基本就这样,欢迎大家拍砖。

此外,有一个问题就是,每次自动kill掉Apache之后,自动启动一个httpd.exe,Apache的错误日志里便会有这个“[warn] (OS 10038)在一个非套接字上尝试了一个操作。 : setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed.”,找了很多资料,测试无果,还在解决中,不过貌似对网站没什么影响。
...全文
608 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fenyao 2009-08-18
不容易呢,帮定!
回复
foolbirdflyfirst 2009-08-18
恭喜你,顺便分享你的经验.
回复
卡宴 2009-08-18
呵呵,多实践,完全没问题
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告