我的服务器(ubuntu 8.04)LAMP运行drupal 6,当有高流量时,它停止提供页面.重启apache2将无法正常工作,因此我必须重新启动该服务.
我在apache2 error.log中找到了这条消息
[通知]抓住SIGWINCH,优雅地关闭
另外我注意到当apache停止响应时,apache2的进程ID大约为12000.
更新
正如您所指出的,捕获的SIGWINCH是apache服务重新启动的通知.我和最大客户一起玩,并保持活力.我将MaxClients设置得太低,所以我得到了"服务器达到MaxClients设置,考虑提高MaxClients设置"错误,但修复了这个问题.
关于PID,我的安装已经安装了prefork模块,因此在达到MaxRequestPerChild后,它会回收子进程.这就是PID定期上升的原因.仍然没有弄清楚为什么一段时间后apache停止响应.
同时将尝试上升MaxRequestPerChild,以便PID不会快速达到PID max.当前限制是32768(这是新debian和ubuntu安装的标准).
这里有更多来自日志:
[2009年4月24日星期五01:48:56] [通知]抓住了SIGWINCH,优雅地关闭了
[Fri Apr 24 01:50:07 2009] [通知] Apache/2.2.8(Ubuntu)PHP/5.2.4-2ubuntu5.3配置了Suhosin-Patch - 恢复正常操作
[2009年4月24日星期五17:13:35] [错误] [客户端195.70.62.131]客户端发送没有主机名的HTTP/1.1请求(参见RFC2616第14.23节):/ w00tw00t.at.ISC.SANS.DFind :)
[2009年4月24日星期五17:36:00] [错误] [客户端212.188.33.4]客户端发送没有主机名的HTTP/1.1请求(参见RFC2616第14.23节):/ w00tw00t.at.ISC.SANS.DFind :)
[Sat Apr 25 20:05:07 2009] [错误] [客户端84.243.222.12]请求中的URI无效GET HTTP/1.1 HTTP/1.1
[Sat Apr 25 20:05:12 2009] [错误] [客户端84.243.222.12]脚本未找到或无法统计:/ usr/lib/cgi-bin/twiki
[Sat Apr 25 20:05:12 2009] [错误] [客户端84.243.222.12]脚本未找到或无法统计:/ usr/lib/cgi-bin/wiki
[Sat Apr 25 20:05:12 2009] [错误] [客户端84.243.222.12]脚本未找到或无法统计:/ usr/lib/cgi-bin/wikis
[2009年4月25日星期六21:46:46] [错误] [客户端211.68.23.167]请求中的URI无效GET HTTP/1.1 HTTP/1.1
[Sun Apr 26 06:13:47 2009] [错误] [客户端86.39.154.89]客户端发送没有主机名的HTTP/1.1请求(参见RFC2616第14.23节):/ w00tw00t.at.ISC.SANS.DFind :)
[Sun Apr 26 06:53:07 2009] [通知]请求正常重启,重启
vaab.. 21
SIGWINCH
事实上,@ Stefano是对的:SIGWINCH意味着SIGNAL WINDOWS CHANGE,当终端检测到其窗口大小发生变化时,会自动发送,以便重新绘制.
SIGWINCH for apache2
但不幸的是,apache2
这个信号很难滥用这个信号(就像他们转移它的第一个意思一样),但是为了防御,他们似乎没有选择,因为缺乏信号而不得不求助于此(参见错误报告).他们的一个假设是apache2
流程总是在后台.所以@mikl也是完全正确的.
那么,要检查什么?
任何自动重启apache2的原因(cron服务,相关服务的apt-get安装......)
否则,你是否在开放的tty中在前台运行apache2?如果是,建议不要这样做(唉),在调整控制终端大小时,你可能很容易轻松点击这个SIGWINCH gracefull关机.
谢谢谁会想到调整终端窗口的大小可能会产生如此意想不到的后果! (4认同)
Stefano Bori.. 17
呃?如果我没记错的话,SIGWINCH是一个信号,当终端窗口的大小发生变化时,它会被发送到终端应用程序(这样应用程序就可以自行调整大小).通常由ncurses应用程序使用.
这很奇怪.这些信息是否为您提供了额外的提示?
SIGWINCH
事实上,@ Stefano是对的:SIGWINCH意味着SIGNAL WINDOWS CHANGE,当终端检测到其窗口大小发生变化时,会自动发送,以便重新绘制.
SIGWINCH for apache2
但不幸的是,apache2
这个信号很难滥用这个信号(就像他们转移它的第一个意思一样),但是为了防御,他们似乎没有选择,因为缺乏信号而不得不求助于此(参见错误报告).他们的一个假设是apache2
流程总是在后台.所以@mikl也是完全正确的.
那么,要检查什么?
任何自动重启apache2的原因(cron服务,相关服务的apt-get安装......)
否则,你是否在开放的tty中在前台运行apache2?如果是,建议不要这样做(唉),在调整控制终端大小时,你可能很容易轻松点击这个SIGWINCH gracefull关机.
呃?如果我没记错的话,SIGWINCH是一个信号,当终端窗口的大小发生变化时,它会被发送到终端应用程序(这样应用程序就可以自行调整大小).通常由ncurses应用程序使用.
这很奇怪.这些信息是否为您提供了额外的提示?
好吧,在Ubuntu上启动和停止Apache的某些情况下使用SIGWINCH.如果我sudo apache2ctl graceful-stop
在我的Ubuntu 8.10服务器上,我在我的日志中得到这个:
[Fri Apr 24 22:41:15 2009] [notice] caught SIGWINCH, shutting down gracefully
我记得它,SIGWINCH也被一些需要在旋转日志,夜间工作等时重启Apache的服务使用.
这并不能解释您目前遇到的问题,但我认为您的服务器上可能正在运行其他正在重启Apache的东西 - 或者它可能与您的问题无关.
如果可以的话,尝试发布更多的日志文件,分析会更容易:)
在Apache上,SIGWINCH是Graceful Stop信号.请注意,这与SIGUSR1不同,后者是Graceful Restart信号.
不幸的是,我们需要更多信息来告诉你为什么Apache优雅地停止.