什么在Apache 2中出现“捕获SIGWINCH”错误?

时间:2009-04-23 08:57:00

标签: ubuntu apache2

我的服务器(ubuntu 8.04)LAMP运行drupal 6,当流量很高时,它会停止提供页面服务。重新启动apache2将无法正常工作,因此我必须重新启动该服务。

我在apache2 error.log

中找到了此消息
  

[通知]抓住SIGWINCH,关闭   优雅地下来

另外我注意到当apache停止响应时,apache2的进程ID大约为12000。

更新

正如您所指出的,捕获的SIGWINCH是apache服务重新启动的通知。我和最大客户一起玩,并保持活力。我将MaxClients设置得太低,所以我得到了“服务器达到MaxClients设置,考虑提高MaxClients设置”错误,但修正了。

关于PID,我的安装已安装prefork module,因此在达到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:)

     

[Fri Apr 24 17:36:00 2009] [错误]   [客户端212.188.33.4]客户端发送   没有主机名的HTTP / 1.1请求(参见   RFC2616第14.23节):   /w00tw00t.at.ISC.SANS.DFind:)

     

[Sat Apr 25 20:05:07 2009] [错误]   [client 84.243.222.12]中的URI无效   请求获取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 /维基

     

[Sat Apr 25 20:05:12 2009] [错误]   [客户端84.243.222.12]脚本没有   发现或无法统计:   / usr / lib中/的cgi-bin /维基

     

[Sat Apr 25 21:46:46 2009] [错误]   [client 211.68.23.167]中的URI无效   请求获取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] [通知]   做了优雅的重启请求   重新启动

4 个答案:

答案 0 :(得分:20)

<强> SIGWINCH

事实上,@ Stefano是对的:SIGWINCH意味着SIGNAL WINDOWS CHANGE,并在终端检测到其窗口大小发生变化时自动发送以允许重绘。

SIGWINCH for apache2

但不幸的是apache2进程很难误用这个信号(就像他们转移它的第一个意思一样),但是为了防守,他们似乎没有选择,因为缺乏信号而不得不求助于此(见bug report)。他们的一个假设是apache2进程总是在后台。所以@mikl也是完全正确的。

那么,要检查什么?

  • 任何自动重启apache2的原因(cron服务,相关服务的apt-get安装......)
  • 否则,你是否在开放的tty中在前台运行apache2?如果是,建议不要这样做(唉),并且在调整控制终端大小时,您可能很容易轻松地完成此SIGWINCH gracefull关闭。

答案 1 :(得分:16)

呃?如果我没记错的话,SIGWINCH是一个信号,当终端窗口的大小发生变化时,它会被发送到终端应用程序(这样应用程序就可以自行调整大小)。通常由ncurses应用程序使用。

这很奇怪。这些信息是否为您提供了额外的提示?

答案 2 :(得分:10)

嗯,在Ubuntu上启动和停止Apache的某些情况下使用SIGWINCH。如果我在我的Ubuntu 8.10服务器上sudo apache2ctl graceful-stop,我会在我的日志中找到它:

[Fri Apr 24 22:41:15 2009] [notice] caught SIGWINCH, shutting down gracefully

我记得,在转动日志,夜间工作等时需要重启Apache的一些服务也使用SIGWINCH。

这并不能解释您目前遇到的问题,但我认为您的服务器上可能正在重启Apache的其他问题 - 或者它可能与您的问题无关。

如果可以的话,尝试发布更多的日志文件,分析起来要容易得多:)

答案 3 :(得分:6)

在Apache上,SIGWINCH是Graceful Stop信号。请注意,这与SIGUSR1不同,后者是Graceful Restart信号。

不幸的是,我们需要更多信息来告诉您Apache正常停止的原因。