37

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

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

[お知らせ] SIGWINCH をキャッチ、正常にシャットダウン

また、Apache が応答を停止したとき、Apache2 のプロセス ID が 12000 前後だったことに気付きました。

アップデート

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

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

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

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

[2009 年 4 月 24 日金曜日 01:48:56] [通知] SIGWINCH をキャッチ、正常にシャットダウン

[Fri Apr 24 01:50:07 2009] [お知らせ] 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:)

[Sat Apr 25 20:05:07 2009] [エラー] [クライアント 84.243.222.12] リクエスト GET HTTP/1.1 HTTP/1.1 の無効な URI

[Sat Apr 25 20:05:12 2009] [エラー] [クライアント 84.243.222.12] スクリプトが見つからないか、stat できません: /usr/lib/cgi-bin/twiki

[Sat Apr 25 20:05:12 2009] [エラー] [クライアント 84.243.222.12] スクリプトが見つからないか、stat できません: /usr/lib/cgi-bin/wiki

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

[Sat Apr 25 21:46:46 2009] [エラー] [クライアント 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:)

[Sun Apr 26 06:53:07 2009] [notice] グレースフル リスタートが要求され、リスタートを実行中

4

4 に答える 4

45

シグウィンチ

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

Apache2 の SIGWINCH

しかし残念なことに、apache2プロセスはこのシグナルをうまく誤用していません (最初の意味をそらす方法で) が、防御のために、彼らには選択の余地がないようであり、シグナルの欠如のためにこれに頼らなければなりませんでした (バグレポートを参照)。彼らの仮定の 1 つは、apache2プロセスが常にバックグラウンドにあるということです。したがって、@ miklも完全に正しいです。

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

  • 正常に apache2 を再起動するための自動的な理由 (cron サービス、関連サービスの apt-get インストール...)
  • そうでなければ、開いている tty でフォアグラウンドで apache2 を実行しますか? はいの場合、これはお勧めできません (悲しいかな)。おそらく、制御端末のサイズを変更するときに、この SIGWINCH グレースフル シャットダウンを簡単に実行できます。
于 2015-09-18T08:19:52.440 に答える
15

さて、SIGWINCH は、Ubuntu で Apache を起動および停止するときに、いくつかの状況で使用されます。sudo apache2ctl graceful-stopUbuntu 8.10 サーバーでこれを行うと、ログに次のように記録されます。

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

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

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

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

于 2009-04-24T20:43:29.777 に答える
6

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

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

于 2009-04-24T21:19:39.627 に答える