web-dev-qa-db-ja.com

「AH00485:MaxRequestWorkersではなくスコアボードがいっぱいです」の意味は何ですか?

私の環境

  • CentOS 6.4 X86_64
  • Apache 2.4.4
  • PHP 5.4.16(FPM)
  • 2 Intel Xeon E5-2620 @ 2.00GHz(8コア、各プロセッサーに16スレッド)
  • 48GB RAM登録済みメモリ。
  • 3ハードディスク15RPM 145GB(RAID0)(BIOによる)

興味深い変数

    <IfModule mpm_event_module>
        StartServers             2
        ThreadLimit             196
        MinSpareThreads         96
        MaxSpareThreads        192
        ThreadsPerChild         96
        MaxRequestWorkers      192
        MaxConnectionsPerChild   96
    </IfModule>

Apacheサーバーのステータス

サーバーのバージョン:Apache/2.2.4(Unix)OpenSSL/1.0.1e mod_fastcgi/mod-fastcgi-SNAP-0910052141
サーバー構築:2013年5月24日16:48:07


現在の時刻:2013年6月17日月曜日09:48:11 COT
再起動時間:2013年6月17日月曜日08:35:14 COT
親サーバー構成。世代:1
親サーバーのMPM生成:0
サーバーの稼働時間:1時間12分57秒
サーバーの負荷:0.05 0.10 0.09
総アクセス:14144-総トラフィック:349.7 MB
CPU使用率:u.28 s.25 cu0 cs0-.0121%CPU負荷
3.23リクエスト/秒-81.8 kB /秒-25.3 kB /リクエスト
1件のリクエストが現在処理中、191人のアイドルワーカー

  PID | Connections       | Threads     | Async connections
      | total | accepting | busy | idle | keep-alive | closing
  ==============================================================
18997 | 3     | yes       | 1    | 95   | 0          | 3
18485 | 0     | yes       | 0    | 96   | 0          | 0
  ==============================================================
Sum   | 3     |           | 1    | 191  | 0          | 3

エラーログ

エラーメッセージは

[Mon Jun 17 09:32:45.680842 2013] [mpm_event:error] [pid 8574:tid 140185091581760] AH00485:スコアボードがいっぱいです。MaxRequestWorkersではありません

これは数秒ごとに表示されます。わかりません。どうすれば修正できますか?

27
Jose Nobile

Apache 2.4.6でも同じ問題がありました。サーバーを監視して数時間設定を調整した後、Apacheにバグがあるように見えます。発生しているように見えるのは、サーバープロセスがG状態(正常に終了)になり、再起動して新しい要求を受け入れることです。これは正常です。通常ではないのは、何らかの理由で再起動に数分かかる場合があることです。いくつかのサーバープロセスしか実行しておらず、それらすべてが同時にG状態になる場合、スコアボードがいっぱいになり、それ以上のリクエストを処理できなくなります。

サーバーの数を増やすことで、すべてのサーバーが同時にG状態になる可能性が低くなりました。また、デフォルトのように見えるため、各サーバープロセスに少なくとも25スレッド(MaxRequestWorkers)を割り当てるようにしてください(つまり、5 Servers x 25 ThreadsPerChild = 125 MaxRequestWorkers)。 ThreadsPerChildは必要に応じて変更できます。デフォルトのままにしておきます。十分なスレッドを割り当てないと、追加のサーバーは起動しません。 MinSpareThreadsのデフォルト値は25で、MaxSpareThreadsのデフォルトは75です。これらの設定を変更する場合、MaxSpareThreadsの値はMinSpareThreadsThreadsPerChildの合計に等しい。また、MaxRequestWorkersServerLimit以下でなければなりません。

これが私たちにとってうまくいったことですが、それはあなたにとって最良の構成ではないかもしれません。

StartServers 3
MinSpareServers 5
MaxSpareServers 10
ServerLimit 250
MaxRequestWorkers 250
MaxConnectionsPerChild 1000
KeepAlive Off

編集:これは確認済み バグ で、httpdのmpm_eventモジュールにありますが、構成では修正できない可能性があります。
リンクされた bugtracker エントリには推定パッチがあり、イベントモジュールの新しいバージョンが正式にリリースされるまでこれを修正する方法についての詳細な議論があります。

19
Kam

同じ問題が発生しています。

Apache 2.4.7-1ubuntu4.4 on Ubuntu 14.04
Server Version: Apache/2.4.7 (Ubuntu)
Server MPM: event
Server Built: Mar 10 2015 13:05:59 

特に、Apacheをリロードすることでこの動作を引き起こす可能性があります。

次に見るのは、止まらない古いプロセスのカップルです。

root     28192  0.0  0.8 103772  8648 ?        Ss   Mar16   0:03 /usr/sbin/Apache2 -k start
www-data  2530  0.3  2.1 865188 21516 ?        Sl   06:26   0:54  \_ /usr/sbin/Apache2 -k start
www-data  2531  0.2  2.1 865436 21892 ?        Sl   06:26   0:51  \_ /usr/sbin/Apache2 -k start
www-data  3299  0.3  2.0 864140 20628 ?        Sl   06:46   0:51  \_ /usr/sbin/Apache2 -k start
www-data  7305  0.3  2.1 865100 21504 ?        Sl   08:36   0:37  \_ /usr/sbin/Apache2 -k start
www-data 11952  0.2  1.8 863004 19268 ?        Sl   10:46   0:06  \_ /usr/sbin/Apache2 -k start
www-data 13284  0.0  0.6 103772  6692 ?        S    11:18   0:00  \_ /usr/sbin/Apache2 -k start
www-data 13553  2.1  2.0 866156 21248 ?        Sl   11:23   0:01  \_ /usr/sbin/Apache2 -k start

「古い」と「新しい」PIDと開始時刻に注意してください。 ^^

PID Connections     Threads Async connections
total   accepting   busy    idle    writing keep-alive  closing
7305    14  no  0   0   0   0   0
2530    13  no  0   0   0   0   0
3299    7   no  0   0   0   0   0
13553   65  no  17  8   0   25  25
2531    15  no  0   0   0   0   0
11952   10  no  0   0   0   0   0
Sum 124     17  8   0   25  25

GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGW_WWWW__W_W_W_WWWWWWW__WWGGGGGGGGGGGGGGGGGGGGGGGGGGGG
GGGGGGGGGGGGGGGGGGGGGG

レプリカデータベースの1つがオフラインになり、タイムアウトし始めたときに、これを確認し始めました。これにより、Apacheで膨大な数のスレッドが拘束されました。

おそらく通常のケースではないでしょうが、このエラーを見た人を助けるためにキヤノンに提出します。

0
mlissner