- 締切済み
Apache のアクセス制限モジュール
Apache の同時接続数を制限するモジュールを探しています。 mod_iplimitconnみたいな「同一のIP」からの同時接続数制限ではなく、 Apache全体に対しての同時接続数制限をしたいのですが、 Apache Registry を検索してもそのようなものが見つかりません。 Google でも検索したのですが。 設定した最大同時接続数を越えると 502 を返すモジュールってないのでしょうか? ご存知の方がいらっしゃいましたらご教示ください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
すみません、素人の意見なのでアドバイスにすらなっていないかもしれませんが、 他の専門家からの指摘を期待して...。 #2補足より >万が一 Apache が落ちると困るので事前に対処をする策を考えています。 > 確かに対策は必要だと思いますが、そもそもアクセス過多によってapacheが落ちる時点で 別の問題があるかと思います。 例えば話に出ているMaxClientsを仮に1に設定した場合、 同時1セッションしか処理されないので、 その1セッションで多くのメモリ等を(CGI等で)消費されない限り問題ないです。 簡単にいうとそれが×MaxClients分になると思っているのですが...。 #メモリ量もRLimitCPU,RLimitMemなんかで設定できるかと思います。 apacheで設定したMaxClientsに限らず、多数のセッションで落ちるのはTCP/IPスタックの問題になってきて、 こうなるとapacheでは制御できないのではないでしょうか? #DDoSならTCP/IPスタックでも制御できないでしょうが... #通常の運用であれば、ikspiariさんが運用されているWatchDog (daemontools)でかなりの対策になるのではないでしょうか? すみません、逆にこういった設定で、多数のセッション等の過負荷テストで apacheが落ちた といった事例があれば、参考にさせて頂きたいと思っております。
すみません、回答ではないですが...。 >MacClients で調整して 502 が返るのでしょうか? > httpd.confの説明を見ると MaxClientsは接続数上限が決まるだけで、それを超えたセッションは単に待ちになると思います。 #で場合によってはタイムアウトになると。 なので、MaxClientsの設定だけでエラーを返すようなことは難しいのでは? それよりアクセス過多でapacheが落ちるというのは サーバに問題がある(メモリ障害や能力不足)とか、サーバにあった設定をしていない ということはないのでしょうか? 一般的に使われるapacheでそうそうアクセス集中でモジュールが落ちるとは思えないのですが...。 できれば参考の為に状況と環境を教えて頂きたいです。 #もしかしてDDoSですか?^ ^;;
補足
アドバイスありがとうございます。 状況としましては、これから構築するサイトがアクセス過多になり、 万が一 Apache が落ちると困るので事前に対処をする策を考えています。 どんなに高スペックでも、そのキャパを越えられてしまったら終わりですよね。 高スペックのサーバを用意する事は簡単ですが、Apache のチューニングの方が難しいですね。 MaxClients の調整をした上でもう一歩欲しいところです。 もう少し Google で調べてみますが、 何かありましたらまたアドバイスお願いします。
- akino4
- ベストアンサー率18% (35/185)
MaxClients とかじゃだめなのですか???
補足
度々ありがとうございます。 教えて君で申し訳ありません。 アクセス過多で Apache が落ちてしまう前に未然に防ぐ策を取りたいのですが、 MacClients で調整して 502 が返るのでしょうか? よく、502 を返す Apache と落ちてしまう Apache がありますよね。 何故前者は 502 を返す事が出来て、後者は落ちてしまうのでしょう? 一応、WatchDog (daemontools)で、最悪プロセスが落ちても 5 秒以内に再起動はするのですが、やはり未然に防げるのがいいと思いまして。 ちょっとタイトルと内容が変わってきてしまいましたが、 アドバイスよろしくお願い致します。
お礼
すみません、お礼の欄ですが補足させてください。 WatchDog はやはり最悪の場合の為に用意してあるもので、 それ以前の段階で回避できるといいですよね。 daemontools で再起動されても、またすぐに落ちたら意味ないですから。 よろしくお願い致します。
補足
返信遅れてすみません。 # メール届かなかったです・・・ # 補足に対しては届かないんでしたっけ? そうなんですよね、私が懸念してるのは多くのセッションをはられる事で、 それが例えば CGI に対してだと内容によっては多くのメモリを使われ、かつ、プロセスがその分作られる訳でして。 そうすると Apache が落ちるのではないかと推測してます。 確かに MacClients,RLimitCPU,RLimitMemの設定である程度制限は出来るのかもしれませんが、 MaxClients だと処理待ちになるそうで、結局待たせてるアクセスに対して順次処理しないといけないですよね。 それよりも「無理!」って返してあげた方がよくないでしょうか? 多分エンドユーザもリロードするんでしょうが。 今までの運営で Apache が落ちた事はないです。 ただ、今回その対処を実装しておかないと厳しい状況でして。 事例があったら対処法もわかるんでしょうけどね。 引き続き調べてみます。 またよろしくお願い致します。