首页 文章

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

提问于
浏览
18

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

我在apache2 error.log中找到了这条消息

[通知] grab 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] [通知] grab 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] [错误] [客户端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]脚本未找到或无法to stat:/ usr / lib / cgi-bin / wiki [Sat Apr 25 20:05:12 2009] [error] [client 84.243.222.12]脚本未找到或无法统计:/ usr / lib / cgi-bin /维基[Sa t 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] [通知]请求正常重启,重新启动

4 回答

  • 19

    好吧,在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的东西 - 或者它可能与您的问题无关 .

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

  • 5

    SIGWINCH

    事实上,@ Stefano是对的:SIGWINCH意味着SIGNAL WINDOWS CHANGE,当终端检测到其窗口大小发生变化时,会自动发送,以便重新绘制 .

    SIGWINCH for apache2

    但不幸的是 apache2 进程很难误用这个信号(他们转移了它的第一个含义的方式),但是为了防守,他们似乎没有选择,因为缺乏信号而不得不诉诸于此(见bug report) . 他们的一个假设是 apache2 进程始终处于后台 . 所以@mikl也是完全正确的 .

    So, what to check ?

    • 任何自动重启apache2的原因(cron服务,相关服务的apt-get安装......)

    • 否则,你是否在开放的tty中在前台运行apache2?如果是,建议不要这样做(唉),在调整控制终端大小时,你可能很容易轻松点击这个SIGWINCH gracefull关机 .

  • 10

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

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

  • 16

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

    不幸的是,我们需要更多信息来说明你为什么Apache优雅地停止 .

相关问题