我的服务器(ubuntu 8.04)运行drupal 6的LAMP,当stream量很大时,停止提供页面。 重新启动apache2将无法正常工作,所以我必须重新启动服务。
我在apache2 error.log中find了这条消息
[注意]引起了SIGWINCH,优雅地closures
另外我注意到,apache2的进程ID,当Apache停止响应时,是12000左右。
更新
正如你所指出的,被捕获的SIGWINCH是apache服务重启的通知。 我玩最大的客户,保持活力。 我设置的MaxClients太低,所以我得到了“服务器达到MaxClients设置,考虑提高MaxClients设置”错误,但修复了。
关于PID,我的安装已经安装了prefork模块 ,所以在达到MaxRequestPerChild之后,它会循环subprocess。 这就是为什么PID正在周期性地上升。 还没搞清楚为什么一会儿apache停止响应。
同时将尝试boostMaxRequestPerChild,使得PID不会达到PID最大值。 目前的限制是32768(这是新的Debian和Ubuntu的安装标准)。
这里是更多从日志:
[Fri Apr 24 01:48:56 2009] [notice]抓住了SIGWINCH,优雅地closures
[2009年4月24日星期一01:50:07] [注意] Apache / 2.2.8(Ubuntu)configuration了Suhosin-Patch的PHP / 5.2.4-2ubuntu5.3 – 恢复正常运行
[Fri Apr 24 17:13:35 2009] [error] [client 195.70.62.131] client sent HTTP / 1.1 request without hostname(请参阅RFC2616第14.23节):/w00tw00t.at.ISC.SANS.DFind 🙂
[2009年4月24日星期五17:36:00] [error] [client 212.188.33.4]客户端发送没有主机名的HTTP / 1.1请求(请参阅RFC2616第14.23节):/w00tw00t.at.ISC.SANS.DFind 🙂
[Sat Apr 25 20:05:07 2009] [error] [client 84.243.222.12]请求中的URI无效GET HTTP / 1.1 HTTP / 1.1
[sat Apr 25 20:05:12 2009] [error] [client 84.243.222.12] script not found or unable to stat:/ usr / lib / cgi-bin / twiki
[sat Apr 25 20:05:12 2009] [error] [client 84.243.222.12] script not found or unable to stat:/ usr / lib / cgi-bin / wiki
[sat Apr 25 20:05:12 2009] [error] [client 84.243.222.12] script not found or unable to stat:/ usr / lib / cgi-bin / wikis
[2009年4月25日21:46:46] [error] [client 211.68.23.167]请求中的URI无效GET HTTP / 1.1 HTTP / 1.1
[Sun Apr 26 06:13:47 2009] [error] [client 86.39.154.89] client sent HTTP / 1.1 request without hostname(请参阅RFC2616第14.23节):/w00tw00t.at.ISC.S.DED.DIN 🙂
[Sun Apr 26 06:53:07 2009] [notice]请求重启,重启
那么,在某些情况下,在Ubuntu上启动和停止Apache时会使用SIGWINCH。 如果我在我的Ubuntu 8.10服务器上执行sudo apache2ctl graceful-stop
,我在日志中得到这个:
[Fri Apr 24 22:41:15 2009] [notice] caught SIGWINCH, shutting down gracefully
正如我所记得的,SIGWINCH也被一些需要在日志,夜间工作等时重启Apache的服务所使用。
这并不能解释你现在遇到的问题,但是我认为它可能是你的服务器上正在重启Apache的东西,或者它可能与你的问题没有关系。
尝试张贴更多的日志文件,如果可以的话,这将是更容易分析:)
呃? 如果我没有记错的话,SIGWINCH是一个信号,当终端窗口的大小发生变化时(这样应用程序可以自行调整大小),这个信号会被发送到终端应用程序。 通常由ncurses应用程序使用。
这很奇怪。 这个信息是否给你额外的提示?
SIGWINCH
事实上,@Stefano是正确的:SIGWINCH意味着信号窗口的变化,当终端检测到窗口大小发生变化以允许重画时自动发送。
SIGWINCH为apache2
但不幸的是, apache2
进程错误地使用了这个信号(就像它们转移了它的第一个意义),但是为了防御,他们似乎没有选择,并且由于缺乏信号而不得不求助于此。 他们的假设之一是apache2
进程总是在后台。 所以@mikl也是完全正确的。
那么,要检查什么?
在Apache上,SIGWINCH是Graceful Stop信号。 请注意,这与SIGUSR1( Graceful Restart信号)不同。
不幸的是,我们需要更多的信息来告诉你为什么Apache正在优雅地停下来。