• 締切済み

Apache のアクセス制限モジュール

Apache の同時接続数を制限するモジュールを探しています。 mod_iplimitconnみたいな「同一のIP」からの同時接続数制限ではなく、 Apache全体に対しての同時接続数制限をしたいのですが、 Apache Registry を検索してもそのようなものが見つかりません。 Google でも検索したのですが。 設定した最大同時接続数を越えると 502 を返すモジュールってないのでしょうか? ご存知の方がいらっしゃいましたらご教示ください。 よろしくお願いします。

みんなの回答

noname#41381
noname#41381
回答No.3

すみません、素人の意見なのでアドバイスにすらなっていないかもしれませんが、 他の専門家からの指摘を期待して...。 #2補足より >万が一 Apache が落ちると困るので事前に対処をする策を考えています。 > 確かに対策は必要だと思いますが、そもそもアクセス過多によってapacheが落ちる時点で 別の問題があるかと思います。 例えば話に出ているMaxClientsを仮に1に設定した場合、 同時1セッションしか処理されないので、 その1セッションで多くのメモリ等を(CGI等で)消費されない限り問題ないです。 簡単にいうとそれが×MaxClients分になると思っているのですが...。 #メモリ量もRLimitCPU,RLimitMemなんかで設定できるかと思います。 apacheで設定したMaxClientsに限らず、多数のセッションで落ちるのはTCP/IPスタックの問題になってきて、 こうなるとapacheでは制御できないのではないでしょうか? #DDoSならTCP/IPスタックでも制御できないでしょうが... #通常の運用であれば、ikspiariさんが運用されているWatchDog (daemontools)でかなりの対策になるのではないでしょうか? すみません、逆にこういった設定で、多数のセッション等の過負荷テストで apacheが落ちた といった事例があれば、参考にさせて頂きたいと思っております。

ikspiari
質問者

お礼

すみません、お礼の欄ですが補足させてください。 WatchDog はやはり最悪の場合の為に用意してあるもので、 それ以前の段階で回避できるといいですよね。 daemontools で再起動されても、またすぐに落ちたら意味ないですから。 よろしくお願い致します。

ikspiari
質問者

補足

返信遅れてすみません。 # メール届かなかったです・・・ # 補足に対しては届かないんでしたっけ? そうなんですよね、私が懸念してるのは多くのセッションをはられる事で、 それが例えば CGI に対してだと内容によっては多くのメモリを使われ、かつ、プロセスがその分作られる訳でして。 そうすると Apache が落ちるのではないかと推測してます。 確かに MacClients,RLimitCPU,RLimitMemの設定である程度制限は出来るのかもしれませんが、 MaxClients だと処理待ちになるそうで、結局待たせてるアクセスに対して順次処理しないといけないですよね。 それよりも「無理!」って返してあげた方がよくないでしょうか? 多分エンドユーザもリロードするんでしょうが。 今までの運営で Apache が落ちた事はないです。 ただ、今回その対処を実装しておかないと厳しい状況でして。 事例があったら対処法もわかるんでしょうけどね。 引き続き調べてみます。 またよろしくお願い致します。

noname#41381
noname#41381
回答No.2

すみません、回答ではないですが...。 >MacClients で調整して 502 が返るのでしょうか? > httpd.confの説明を見ると MaxClientsは接続数上限が決まるだけで、それを超えたセッションは単に待ちになると思います。 #で場合によってはタイムアウトになると。 なので、MaxClientsの設定だけでエラーを返すようなことは難しいのでは? それよりアクセス過多でapacheが落ちるというのは サーバに問題がある(メモリ障害や能力不足)とか、サーバにあった設定をしていない ということはないのでしょうか? 一般的に使われるapacheでそうそうアクセス集中でモジュールが落ちるとは思えないのですが...。 できれば参考の為に状況と環境を教えて頂きたいです。 #もしかしてDDoSですか?^ ^;;

ikspiari
質問者

補足

アドバイスありがとうございます。 状況としましては、これから構築するサイトがアクセス過多になり、 万が一 Apache が落ちると困るので事前に対処をする策を考えています。 どんなに高スペックでも、そのキャパを越えられてしまったら終わりですよね。 高スペックのサーバを用意する事は簡単ですが、Apache のチューニングの方が難しいですね。 MaxClients の調整をした上でもう一歩欲しいところです。 もう少し Google で調べてみますが、 何かありましたらまたアドバイスお願いします。

  • akino4
  • ベストアンサー率18% (35/185)
回答No.1

MaxClients とかじゃだめなのですか???

ikspiari
質問者

補足

度々ありがとうございます。 教えて君で申し訳ありません。 アクセス過多で Apache が落ちてしまう前に未然に防ぐ策を取りたいのですが、 MacClients で調整して 502 が返るのでしょうか? よく、502 を返す Apache と落ちてしまう Apache がありますよね。 何故前者は 502 を返す事が出来て、後者は落ちてしまうのでしょう? 一応、WatchDog (daemontools)で、最悪プロセスが落ちても 5 秒以内に再起動はするのですが、やはり未然に防げるのがいいと思いまして。 ちょっとタイトルと内容が変わってきてしまいましたが、 アドバイスよろしくお願い致します。

関連するQ&A

  • Apacheでフォルダごとに接続数を制限する方法は?

    Apache1.3.34 でサーバを立てていますが 接続数が最大接続数を超えてしまい ページの表示が非常に遅くなってしまいました そこで大きなファイルを置いてあるフォルダへの接続数を制限しようと思っています。 どのようなmoduleを使うべきでしょうか? すでにmod_limitipconn.cを用いて1IPに対する接続数は制限しています

  • Apacheモジュールの二重インストール

    Apacheのモジュールについて質問です。Debianで動かしています。Apacheは1.3.33です。 いろいろ設定をいじって確認しているうちに、誤ってかapachectlで設定をチェックすると、mod_mimeが無いと表示されるようになりました。そこで、Apacheのソースからmod_mimd.cを取って来て、apxsで入れました。 その結果、apahectlではSyntax OKとなりましたが、代わりに以下のような警告が出るようになってしまいました。 # apachectl configtest [Sat May 21 00:37:55 2005] [warn] module mime_module is already loaded, skipping [Sat May 21 00:37:55 2005] [warn] module mod_mime.c is already added, skipping 使用できるものの、apachectlを実行すると毎回以下のような警告が出てしまうので、何とかできないものかと思っております。どうやらモジュールmod_mimeが二重にインストールされた状態になっていると思います。なお、apacheはapt-getでアンインストール、インストールし直しましたが、状況は変わりませんでした。 よろしくお願いいたします。

  • Apache:特定のディレクトリで同時アクセス数制限

    Apache 1.3.29をMacOS X(10.3.3)にて使っています。 Apacheには同時に処理できるリクエストを設定できますが(MaxCliants)、特定のディレクトリで同時アクセス数を 制限することは可能でしょうか? 例えばabc.com/limit/*のような「limit」フォルダに入った ファイルを合計5ファイルまでしか同時にダウンロード できなくしたいというわけです。 さらに1ホストにつき1アクセスの制限を 特定のディレクトリに設定できるとさらにありがたいです。 アドバイスよろしくお願いします。

  • ApacheのIP制限について

    ApacheのIP制限について CentOS5とWindowsVista両方のOSでApacheの勉強をしている者です。 ApacheのバージョンはWindowsVistaなら2.0.63で、CentOS5は2.2のを試しています。 ところで、「特定のアクセス元に対してアクセスを禁止する」の部分ですが、 ------------------- Order allow,deny Allow from all Deny from xxx.xxx.xxx.xxx ------------------- の部分にxxx.xxx.xxx.xxxを WindowsVistaでは、192.168.1.28といったapacheをインストールしている本機マシンをアクセス制限に試してみようと思いましたが、うまくいきません。 また、友だちのサーバのCentOS5で、私の契約しているプロバイダーのIPをアクセス制限しようと思いましたが、それでも上手くいきませんでした。 CentOSの方には色々と試してみて、mod_access.soをインストールしてみましたが、それでもうまくいきません。 ただし、逆に ------------------- Order deny,allow Deny from all ------------------- を指定すると正常にアクセス制限することはできますが、私が望んでいることは特定のIPに対してアクセス制限をかける方法を知りたいのです。 何かお分かりの方は、ご回答をお願いします。

  • DB接続を行うApacheモジュールをApacheに追加して、Apacheを再起動するとエラー

    皆さんこんにちは。 Apacheモジュールを作りを行っていました。 モジュール内で、 MySQLにコネクションをはり、 queryリクエストの往来を行うだけの単純なものです。 モジュールの作成から次の順序で作業を進めました。 ----------------------------- (1)モジュールの作成 (2)モジュール(1)のmakeを行う -> make成功 (3)モジュールのsoファイルを配置。 /usr/local/apache2/modules/ に make時に作成された モジュールの「soファイル」を配置。 (4)httpd.confの編集 httpd.confに 作成したモジュールのディレクティブを挿入。 LoadModule db_connect_module modules/db_connect.so <Location /db_connect> SetHandler db_connect </Location> (5)Apacheのリスタート ----------------------------- (5)でapacheの再起動を行うと、 次のエラーが表示されました。 httpd: Syntax error on line 96 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_db_connect.so into server: /usr/local/apache2/modules/mod_db_connect.so: undefined symbol: mysql_query ここで不思議だったのは、 確かに、 作成したMySQLに接続するためのApacheモジュール内で、 「mysql_query」を利用していますが、 そのモジュールのmake時には エラーが表示されていなかったし、 make時にエラーが出なかったとおり、 モジュール内のソースでも、 記述した「mysql.h」も正常にインクルードされていると思います。 どうして、 apacheのhttpd.confは 「mysql_query」に関する 上記のエラーを出してくるのでしょうか? どなたか考えられる原因を アドバイスいただけるとありがたい次第です。 以上どうぞ宜しくお願い致します。

  • ApacheにおけるSSLモジュールの動作

    以下の環境でssl通信(https)を計画しています。 OS:RedHat Linux AS 4 Web:Apache 2.0 Apache2.0からはsslのモジュールは標準機能だと思っているのですが、 httpd.confに次の様に設定するとエラーとなり、httpdが起動しません。 <VirtualHost *:443> ServerName hogehoge.example.com SSLProxyEngine on    ・    ・    ・ </VirtualHost> エラーの内容: Invalid command 'SSLProxyEngine', perhaps misspelled or defined by a module not included in the server configuration mod_sslがincludeされていないためと考え、httpd.confにmod_ssl.soを追加しましたが、mod_ssl.soが存在しないため、エラーとなり、やっぱり起動できません。 質問内容 (1)Apache 2.0 でSSLProxyEnginディレクティブの正しい定義の仕方を教えてください。 (2)必要であれば、mod_sslを追加で導入する手順について教えてください。  ApacheはDSOサポート環境です。(mod_so.cがあります) よろしくお願いいたします。

  • Apacheの最大接続数を増やしたい

    VineLinuxでApache1.3を使っているのですが すぐに接続最大数の256に達してしまい困っています 接続最大数を256以上に設定すると起動できません どうすれば接続最大数を256以上に設定できるのでしょうか?

  • apache2.2 mod_proxy インストールについて

    現時、CentOS5にApache2.24をtarからインストールを行っているのですが、その際一緒にmod_proxyとmod_proxy_ajpを同時にインストールしようとしています。 いろいろ検索してもても ./configure --enable-proxy --enable-proxy-ajp make make install と多くのページで紹介されていたので この通りにしてみたところ インストールは無事に終わるのですが、 そこからmod_proxyやmod_proxy_ajpを探してもありません。 何度もやってみましたがダメでした。 インストール時に同時にこれらのモジュールをインストールするにはどうしたらいいのでしょうか?

  • WinXP+Apache2にeRubyを入れたい。

    Ruby初心者です。 「WinXp+Apache2+PHP5+MySQL5」の環境を使用しています。 今度Rubyも入れようと考えています。 PHPのようにRubyを動かしたくてネットを検索すると「eRuby」を使い 「mod_ruby.so」をApacheのモジュールとして組込む必要が有る と書かれています。が・・・ネットに記載のある 「http://rtokiwa.s55.xrea.com/wiki/index.php?mod_ruby_win32bin」や 「http://www.modruby.net」が接続できません。 mod_rubyのWindowsバイナリーは何処で入手出来るのでしょうか? 同様にeRubyのWindowsバイナリーは何処で入手出来るのでしょうか? ネットの記載も古い物が多く、最近は「mod_ruby.so」や「eRuby」を使わなくても 「WinXp+Apache2」環境でPHPの様に使用出来る環境設定が有るのでしょうか? 初心者なもので自分の環境にRubyを構築できず困っています。 どなたか、ご教授ください。 よろしくお願いします。

  • ページかホスト単位での同時アクセス数制限(Apache 2.0)

    Apache 2.0で仮想ホストが複数あるとします。 仮想ホストAのアクセス集中で仮想ホストBや仮想ホストCまで遅延が発生するという事態を避ける為に、 あらかじめ仮想ホストA全体あるいはページ単位で同時アクセス数制限をかけ、同居のサイトに迷惑が及ばないようにする事は可能ですか?