解决APACHE服务器不定时挂掉故障一例

  圆嘟嘟选择的主机搭配是Windows 2003 Server+Apache+PHP+Mysql,当网站初步上线测试后,我在主机运维方面遇到了很多问题,这里先说一个比较罕见,而且也让我头疼好几天的问题,就是APACHE在运行一段不定时的时间后,就自动停止了,Windows系统日志显示是:Apache2 服务因 1 (0x1) 服务性错误而停止。而APACHE的error日志里最后的内容如下:

  [Thu Mar 21 01:08:09.187500 2013] [mpm_winnt:notice] [pid 2988:tid 1696] AH00358: Child: Process exiting because it reached MaxConnectionsPerChild. Signaling the parent to restart a new child process.

  [Thu Mar 21 01:08:09.203125 2013] [mpm_winnt:notice] [pid 2992:tid 436] AH00424: Parent: Received restart signal -- Restarting the server.

  [Thu Mar 21 01:08:11.000000 2013] [ssl:warn] [pid 2992:tid 436] AH01873: Init: Session Cache is not configured [hint: SSLSessionCache]

  [Thu Mar 21 01:08:11.187500 2013] [mpm_winnt:notice] [pid 2988:tid 1696] AH00364: Child: All worker threads have exited.

  别的内容似乎都正常,除了SSL的警告外,一开始是搞不清楚状况,以为是SSL配置有问题,就对SSL进行了配置,但配置完以后,是不提示“Session Cache is not configured”了,但故障依然,我又继续从APACHE的错误日志中寻找线索,这次我用到的关键字是“MaxConnectionsPerChild”,这个配置可能很多人也不知道是什么,这是APACHE2.4才改成这样的,原来叫MaxRequestsPerChild,意思是指子进程的最大连接数,当达到设置值以后,APACHE就会结束当前的子进程,释放内存,再开启新的子进程,这个设置是在httpd-mpm.conf里面的,因为是运行在Windows环境下,所以对就的是WinNT MPM,原来的设置是:

  ThreadsPerChild 250

  MaxConnectionsPerChild 10000

  都说为了防止内存溢出,MaxConnectionsPerChild不要设成0,但可以考虑设成小的数值,于是我设成500,继续测试,但不管我改成多少,APACHE还是依然不定时就挂了,依照网上有关的方法我全试了个遍,终究没有解决这个问题,我都动了重置系统再来的念头了...

  在解决这个问题的过程中,我发现系统运行的非常非常慢,打开任务管理器一看,内存居然占了3G多,才发现其实APACHE其实并没有结束掉子进程,内存一直占用着并没有得到翻译,我好像得到点启发了,看来这压根跟MaxConnectionsPerChild的设置没多大的联系,而是在达到子进程限定的线程数后,当APACHE尝试关闭当前子进程再重新开启新的子进程时发生了什么事情让它这么做失败了呢?我又打开了Windows的日志查看器,终于在应用程序日志里找到一条跟APACHE出错同时产生的日志,内容是“事件 ID ( 487 )的描述(在资源( Zend Optimizer+ )中)无法找到。”,依据这个,我继续在网上搜索有关这个错误日志的相关内容,但很可惜的是所有的解决办法我都试过了,依然无果,最后我就干脆把zend关了,具体做法是,打开php.ini,把以下两行注释掉,问题终于解决.....

  [zend]

  zend_extension="D:phpextZendOptimizer.dll"

  这样APACHE终于可以运行正常了。

  本文由圆嘟嘟:http://www.yuandudu.com原创提供,版权所有,转载请注明,谢谢!

时间: 2024-10-22 20:18:07

解决APACHE服务器不定时挂掉故障一例的相关文章

电脑出现无法启动Apache服务器的问题如何解决

  电脑出现无法启动Apache服务器的问题如何解决           1.按Win+R键打开运行,cmd并回车; 2.打开命令提示符后,输入"netstat -ano",按回车键,查看端口的使用情况; 3.右击任务栏,选择"启动任务管理器",在进程中,查看PID一栏中占用软件端口的进程,并选中点击结束进程即可; 4.如果仍没有解决问题,则打开"网络和共享中心"--"更改适配器设置"; 5.右击打开"本地连接&qu

解决apache Web服务器网页显示乱码的方法

解决的方法之一:   (1)在每一个网页里增加 <meta http-equiv="Content-Language" content="zh-cn">; <meta http-equiv="Content-Type" content="text/html; charset=GB2312">; 并在APACHE的httpd.conf配置文件中将AddDefaultCharset ISO-8859-1 改

apache服务器解决url中文无法正常显示解决办法

apache服务器解决url中文无法正常显示解决办法 我们在php教程中用个url 编码函数,利用它就可以解决了,方法下如. <?php $interest = "arts"; $homepage = "http://www.111cn.net"; $query = "homepage=".urlencode( $homepage ); $query .= "&interest=".urlencode( $int

在Apache服务器上利用Varnish优化移动端访问的方法_Linux

想象一下,你刚刚发布了一篇博文,并分享到了社交网络.然后,这篇文章恰巧被大V看中再次分享了出去,立即吸引了数百粉丝的目光,引导他们涌入了你的网站.看到这么多的访客量,以及它们的评论,你内心激动不已.突然之间,你的网站就挂掉了,满屏的数据连接错误-- 或者假想另一种情境,你一直很努力地创业.突然有一天,一个大V在社交网络表达了对贵公司的喜爱之情,字里行间满满的赞叹.关注这个大V的粉丝心动了,又涌入了你的网站.不幸的是,点击连接后却无法进入你的网站,或者进入后无法注册用户,甚至页面相应超时,无法获取

Apache服务器的用户认证(1)

apache|服务器 经常上网的读者会遇到这种情况:访问一些网站的某些资源时,浏览器弹出一个对话框,要求输入用户名和密码来获取对资源的访问.这就是用户认证的一种技术.用户认证是保护网络系统资源的第一道防线,它控制着所有登录并检查访问用户的合法性,其目标是仅让合法用户以合法的权限访问网络系统的资源.基本的用户认证技术是"用户名+密码". Apache是目前流行的Web服务器,可运行在Linux.Unix.Windows等操作系统下,它可以很好地解决"用户名+密码"的认

Apache服务器的用户认证 (转)

apache|服务器 经常上网的读者会遇到这种情况:访问一些网站的某些资源时,浏览器弹出一个对话框,要求输入用户名和密码来获取对资源的访问.这就是用户认证的一种技术.用户认证是保护网络系统资源的第一道防线,它控制着所有登录并检查访问用户的合法性,其目标是仅让合法用户以合法的权限访问网络系统的资源.基本的用户认证技术是"用户名+密码". Apache是目前流行的Web服务器,可运行在Linux.Unix.Windows等操作系统下,它可以很好地解决"用户名+密码"的认

Apache服务器的用户认证

apache|服务器 作者:徐辉 经常上网的读者会遇到这种情况:访问一些网站的某些资源时,浏览器弹出一个对话框,要求输入用户名和密码来获取对资源的访问.这就是用户认证的一种技术.用户认证是保护网络系统资源的第一道防线,它控制着所有登录并检查访问用户的合法性,其目标是仅让合法用户以合法的权限访问网络系统的资源.基本的用户认证技术是"用户名+密码". Apache是目前流行的Web服务器,可运行在Linux.Unix.Windows等操作系统下,它可以很好地解决"用户名+密码&q

Apache服务器攻略 用户认证简单配置方案集

Apache是目前流行的Web服务器,可运行在linux.Unix.Windows等操作系统下,它可以很好地解决"用户名+密码"的认证问题.Apache用户认证所需要的用户名和密码有两种不同的存贮方式:一种是文本文件:另一种是MSQL. Oracle.MySQL等数据库.下面以Linux的Apache为例,就这两种存贮方式,同时能对Windows的 Apache用户认证作简要的说明.下面我们来介绍下通过文本认证而实现的方式. 建立用户的认证授权需要三个步骤: 1.建立用户库 2.配置服

apache服务器的安装问题

问题描述 apache服务器的安装问题 为什么我安装好了阿帕奇服务器,我是在网上看韩老师教程自学的,安装好了发现在进程里面没有看到韩老师说的httpd.exe这个进程,这个是为什么呢,是不是我安装没成功呢 解决方案 运行Apache HTTP Sever 2.2,没有的话回官网去下载,有个GUI的.最新的2.6版本没有的,2.2才有的,然后下载回来安装好以后开始 运行 Apache -- /Monitor Apache Servers点开就有了.启动服务器以后重启解决 解决方案二: 是没有启动吧