让我头痛的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.”,找了很多资料,测试无果,还在解决中,不过貌似对网站没什么影响。