web-dev-qa-db-ja.com

Apache 2の「caught SIGWINCH」エラーとは何ですか?

私のサーバー(ubuntu 8.04)LAMP実行drupal 6、トラフィックが多いと、ページの提供が停止します。Apache2の再起動は機能しないため、サービスを再起動する必要があります。

Apache2 error.logでこのメッセージを見つけました

[通知] SIGWINCHをキャッチし、正常にシャットダウンしました

また、Apache2のプロセスIDは、Apacheが応答を停止したときに約12000であったことにも気づきました。

更新

キャッチしたSIGWINCHは、ご指摘のとおり、Apacheサービスの再起動の通知です。私は最大のクライアントと遊んで、生き続けました。 MaxClientsの設定が低すぎるため、「サーバーがMaxClients設定に達しました。MaxClients設定を上げることを検討してください」というエラーが表示されましたが、修正しました。

PIDに関しては、私のインストールには prefork module がインストールされているため、 MaxRequestPerChild に到達すると、子プロセスがリサイクルされます。そのため、PIDは定期的に上昇しています。それでもしばらくして、Apacheが応答を停止する理由がわかりません。

その間、PIDがPID maxにそれほど速く到達しないように、MaxRequestPerChildを上げようとします。現在の制限は32768です(これは、新しいdebianおよびubuntuインストールの標準です)。

ログの詳細は次のとおりです。

[Fri 24 24 01:48:56 2009] [通知] SIGWINCHをキャッチし、正常にシャットダウンしました

[2009年4月24日金曜日01:50:07] [通知] Suhosin-Patchが構成されたApache/2.2.8(Ubuntu)PHP/5.2.4-2ubuntu5.3-通常の操作の再開

[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 :)

[2009年4月25日20:05:07] [エラー] [クライアント84.243.222.12]リクエストGET HTTP/1.1 HTTP/1.1に無効なURI

[2009年4月25日20:05:12] [エラー] [クライアント84.243.222.12]スクリプトが見つからないか、統計できない:/ usr/lib/cgi-bin/twiki

[2009年4月25日20:05:12] [エラー] [クライアント84.243.222.12]スクリプトが見つからないか、統計できない:/ usr/lib/cgi-bin/wiki

[2009年4月25日20:05:12] [エラー] [クライアント84.243.222.12]スクリプトが見つからないか、統計できません:/ usr/lib/cgi-bin/wikis

[2009年4月25日21:46:46] [エラー] [クライアント211.68.23.167]リクエストGET HTTP/1.1 HTTP/1.1の無効なURI

[2009年4月26日06:13:47] [エラー] [クライアント86.39.154.89]クライアントがホスト名なしでHTTP/1.1リクエストを送信(RFC2616セクション14.23を参照):/w00tw00t.at.ISC.SANS.DFind :)

[2009年4月26日06:53:07] [通知]グレースフルリスタートが要求され、リスタートを実行

24
Geries

まあ、SIGWINCHは、UbuntuでApacheを起動および停止する場合に使用されます。私が行った場合 Sudo Apache2ctl graceful-stop私のUbuntu 8.10サーバーでは、ログにこれが表示されます。

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

覚えていますが、SIGWINCHは、ログや夜間のジョブなどをローテーションするときにApacheを再起動する必要がある一部のサービスでも使用されます。

それはあなたが現在抱えている問題を説明するものではありませんが、Apacheを再起動しているのはサーバー上で実行されている別の問題かもしれません。

可能であれば、より多くのログファイルを投稿してみてください。分析がはるかに簡単になります:)

11
mikl

[〜#〜] sigwinch [〜#〜]

実際のところ、@ Stefanoは正しいです。SIGWINCHはSIGNAL WINDOWS CHANGEを意味し、端末がウィンドウサイズの変更を検出すると、再描画を可能にするために自動的に送信されます。

SIGWINCH for Apache2

しかし残念ながら Apache2プロセスはこのシグナルを誤用しがちですが(最初の意味をそらす方法で)、防御のために選択の余地がなく、シグナルがないためこれに頼らざるを得ませんでした( バグレポート )。彼らの仮定の1つはApache2プロセスは常にバックグラウンドで実行されます。 @miklも完全に正しいです。

それで、何をチェックしますか?

  • apache2(cronサービス、関連サービスのapt-getインストールなど)を正常に再起動する自動理由
  • それ以外の場合、オープンttyのフォアグラウンドでApache2を実行しますか?はいの場合、これはお勧めできません(alas)。制御端末のサイズを変更すると、おそらくこのSIGWINCHグレースフルシャットダウンを簡単に実行できます。
24
vaab

え?私の記憶が正しければ、SIGWINCHは、ターミナルウィンドウのサイズが変更されたときにターミナルアプリケーションに送信される信号です(そのため、アプリケーションは自分自身のサイズを変更できます)。通常、ncursesアプリケーションで使用されます。

これは非常に奇妙です。この情報はあなたに追加のヒントを与えますか?

18
Stefano Borini

Apacheでは、SIGWINCHは Graceful Stop シグナルです。これは グレースフルリスタート 信号であるSIGUSR1とは異なることに注意してください。

残念ながら、Apacheが正常に停止している理由を説明するための詳細情報が必要です。

6
Powerlord