• ベストアンサー

【apache】MaxClientsを超えた場合に任意のエラーページを表示させたい

apache2.0 での質問です。 (1) httpd.conf にMaxClientsを設定できますが、この値を超えたリクエストがあった場合に特定のページに遷移させる方法はありますか? 例えば「大変混み合ってます」とか。 MaxClients値を越えた際に503のステータスコードを返すようであれば問題ないのですが、そうではなさそうなので・・・ (この認識はあってますか?) 何か追加でモジュールを入れる必要があるのでしょうか? また、MaxClients値を超えたリクエストがあった場合、そのことを示すログは出力されますか? 以上、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • shel_tea
  • ベストアンサー率66% (2/3)
回答No.1

MaxClients はプロセス数の制限です。 apache のドキュメントには、超えたリクエストは ListenBackLog で 指定した数までキューに入る、とありますので 特定のページに転送、というのは難しそうに思えます。 (特定のページが表示できるのであれば httpd は普通にリクエストに 応答できている、という考え方もできますが。。) MaxClients 値を超えた場合は error_log に server reached MaxClients setting, consider raising the MaxClients setting というエラーメッセージが出るようです。 MaxClients ディレクティブ http://httpd.apache.org/docs/2.0/ja/mod/mpm_common.html#maxclients httpd.confによるWebサーバの最適化 http://www.atmarkit.co.jp/flinux/rensai/apache2_03/apache03b.html

harahachi
質問者

お礼

やはり難しそうですね。 エラーメッセージは大変参考になりました。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Apacheについて

    apacheのhttpd.confについてお聞きしたいことあります. httpd.confは具体的にどのような時に使用するものなのでしょうか? モジュールを追加する際に記述する必要なソースなのでしょうか? そうであれば, 拡張モジュールを追加する具体的な記述方法がよく分かっていないので,何か参考になるページがあれば教えていただきたいのですが. よろしくお願いします.

    • 締切済み
    • PHP
  • 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で特定のログだけ抽出したい。

    LinuxにてApache2を運用しているのですが、特定の条件のログのみ抽出できないものかと悩んでいます。 特定の条件とは、例えばUser-Agentが"Mozilla"で、 ステータスコードが"206"、尚且つURIに".gif"を含む。 と言う様な複数の条件を全てクリアしたアクセスのみロギングしたいのです。 SetEnvIfを使おうかと思ったのですがアンド条件の場合の方法が 思いつきませんでした。 外部のスクリプト等を使えば簡単だとは思うのですが、 httpd.confの設定のみで行なえないものでしょうか? どうかアドバイスをよろしくお願いいたします。

  • Apache2のMaxClientsについて

    CentOS 5.6環境で、Apache2.2.3+PHP5.3.6を利用しております。httpdのプロセス数がhttpd.confのMaxClients値を超えたとたんに、今まで接続できていた全てのクライアントがダウンになってしまった。それはどうしてでしょうか? こちらの理解では、少なくともMaxClientsと同等の数のプロセスは通常通り処理してくれると思いますが、間違いでしょうか? どうしてキューに入れてくれないでしょうか? この問題はMaxClientsを増やすしか他の解決方法があるでしょうか? よろしくお願いします。

  • Apache/PHPのエラーについて

    PHPを入れた後、apacheを起動すると The requested operation has failed! が表示されます サイトを参考にhttpd.confは以下を修正してます LoadModule php4_module "D:/php/sapi/php4apache2.dll" AddType application/x-httpd-php .php apacheのerror.logには特に何も出力されていません ほかに何か確認するところがありましたら教えてください バージョン apache_2.2.13 PHP ver.4.3.8

    • ベストアンサー
    • PHP
  • apacheのログについて

    Solaris10において、Apache2.2.8を使用しています。 httpd.confのListenを80から変更したところ、アクセスログ(/usr/local/apache2/logs/access_log)が出力されなくなりました。 再起動してもダメです。 Listenポート番号の変更でログの出力に影響が出るのでしょうか? ご教授お願いします。

  • Apacheのログ出力方法とローテーションについて

    Apacheのログ出力方法とローテーションについて教えてください。 apacheとweblogicとJavaを使ってweb開発をしています。 現状、httpd.confでエラーログとアクセスログを出力していて、今度からWebLogicの プラグインログ(WLLogFile)を追加出力しようと考えています。 エラーログとアクセスログのログローテーションは別サーバのUNIXクーロンと作成した プログラムを用いて行なっていますが、今度追加するプラグインログをローテーション するとなるとそのプログラムに修正が入ってしまうため、それを避けるためにApacheの httpd.confのrotatelogsでログローテーションを行いたいと思っています。 色々調べて見てエラーログとアクセスログについてはログローテーションは できたのですが、WLLogfileで出力するログについてはローテーションが行なえません。 rotatelogsではそもそもエラーログとアクセスログ以外はローテーションできないのか、 それとも自分のやり方が間違っているのか分からなくなってきてしまったため、質問 させて頂いてます。 ちなみにプラグインログはhttpd.conf内で以下のように設定しています。 #Weblogic Config <IfModule mod_weblogic.c> WebLogicHost サーバのIPアドレス WebLogPort ポート番号 MachExpressoion *.* Debug ERR WLLogFile "C:/Apache/logs/wlproxy.log" ☆やりたいことのイメージ↓ #WLLogFile "|C:/Apache/bin/rotatelogs C:/Apache/logs/wlproxy.log 86400" </IfModule> 環境は以下です。 Apache/2.2.9(Win32) Windows Server 2003 宜しくお願いします。

  • Apacheを複数のhttpd.confを用いてる場合の再起動

    Apacheを複数のhttpd.confファイルを用いて運用している場合、 個々のhttpd.confを指定してのApache再起動は可能なのでしょうか? 試しに、httpd_1.confとhttpd_2.confを用いて実施してみましたけど、 エラーになってしまいました。 手順を踏まえての詳細を以下に示します。 1./usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd_1.conf コマンドでApacheを起動。 2./usr/local/apache2/bin/apachectl -f /usr/local/apache2/conf/httpd_2.conf コマンドでApacheを起動。 3.その後Apacheを停止したらプロセスが残ってしまいました。

  • apache でバイナリのCGIを動かすには

    apache でバイナリのCGIを動かすにはどうすればよいのでしょうか? (なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します) OS:WIN98 C++バイナリのCGIを呼び出すと下記エラーとなります。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please .... the error. More ... log. - Apache/1.3.12 Server at http://127.0.0.2/ Port 80 最終アクセスログ 127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610 最終エラーログ [Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi apache の httpd.conf と httpd.conf.default との比較 ** httpd.conf ServerName http://127.0.0.2/ ** httpd.conf.default #ServerName new.host.name ** httpd.conf DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81" ** httpd.conf.default DocumentRoot "C:/Apache/htdocs" ** httpd.conf <Directory /> Options FollowSymLinks ExecCGI AllowOverride None ** httpd.conf.default <Directory /> Options FollowSymLinks AllowOverride None ** httpd.conf <Directory "E:/WWW.HOMEPAGE/KOKUCHO81"> ** httpd.conf.default <Directory "C:/Apache/htdocs"> ** httpd.conf Options Indexes FollowSymLinks ExecCGI ** httpd.conf.default Options Indexes FollowSymLinks MultiViews ** httpd.conf AddHandler cgi-script .cgi ** httpd.conf.default #AddHandler cgi-script .cgi そもそも、設定が足りてないんでしょうか? apacheを良く使う方、よろしくお願いします。m(_ _)m

  • Apache-Tomcatの連携設定

    Apache-Tomcatの連携をしたいと思いhttpd.conf及びhttpd-proxy.conf に 以下設定を行いました。 ただし、画像へのリクエストはApacheで処理したい思い ProxyPass /test/img ! という一文を加えてあります。この設定でWindowsのサービス一覧の画面からApacheを 再起動したところ 「ローカルコンピューターでApache2.2を開始できませんでした。~」と エラーが出てApacheを起動できませんでした。しかし、上記の一文を除去したところ 起動しました。同様の記述をLinuxにインストールしたApacheには 記述しておりますが想定通り画像のリクエスとはApacheで処理されております。 Windowsではなぜエラーになるのかおわかりになりますでしょうか。 【httpd.conf】 Include conf/extra/httpd-proxy.conf 【httpd-proxy.conf】 <Location /test/>   ProxyPass /test/img !   ProxyPass ajp://localhost:8009/test/ </Location>

    • ベストアンサー
    • Java