当前位置: 首页>>技术问答>>正文


Apache 2中的“caught SIGWINCH”错误是什么?

,

问题描述

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

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

[notice] caught SIGWINCH, shutting down gracefully

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

更新

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

关于PID,我的安装安装了prefork module,因此在达到MaxRequestPerChild后,它会回收子进程。这就是PID定期上升的原因。仍然没有弄清楚为什么一段时间后apache停止响应。

同时将尝试上升MaxRequestPerChild,以便PID不会快速达到PID max。当前限制是32768(这是新debian和ubuntu安装的标准)。

这里有更多来自日志:

[Fri Apr 24 01:48:56 2009] [notice] caught SIGWINCH, shutting down gracefully

[Fri Apr 24 01:50:07 2009] [notice] Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.3 with Suhosin-Patch configured — resuming normal operations

[Fri Apr 24 17:13:35 2009] [error] [client 195.70.62.131] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)

[Fri Apr 24 17:36:00 2009] [error] [client 212.188.33.4] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)

[Sat Apr 25 20:05:07 2009] [error] [client 84.243.222.12] Invalid URI in request 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

[Sat Apr 25 21:46:46 2009] [error] [client 211.68.23.167] Invalid URI in request 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 (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)

[Sun Apr 26 06:53:07 2009] [notice] Graceful restart requested, doing restart

最佳解决方案

好吧,在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

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

SIGWINCH for apache2

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

那么,要检查什么?

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

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

第三种解决方案

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

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

第四种方案

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6861.html,未经允许,请勿转载。