• ベストアンサー

apacheで多数のアクセスを処理するには?

Redhat7.3+apache1.3.24でテストサーバーを組んでいます。 一時的にアクセスが急増しそうなサイトを構築するので、とりあえずテストとして MaxClient=250に設定しました。 評価用に100個の画像を含んだページを作成し、5秒ごとにリロードするようにしました。これを1PCあたり10個、合計3つのPC(Win2k+IE6)で動かしましたが、しばらくするとそのうちの10個程度が「サーバが応答しない」と文句を言ってきます。 ネットスケープやオペラを使っても同じようになりますので、クライアント側の問題ではないのかなぁとは思うのですが、apacheの設定に何か注意が必要なのでしょうか? ご存知の方がいらっしゃいましたらアドバイスをお願いします。

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

  • ベストアンサー
  • aton
  • ベストアンサー率47% (160/334)
回答No.4

実効速度が100Mbps(12.5MBps)の1/3とすると,約4MBps。最大同時アクセスが,ご自分で書かれているとおり 500KB(1ページ) x 3台 x 10クライアントで,15MBですから,転送だけでだいたい3.5秒強かかることになります。5秒に1回のリロードだとすると,残りの約1.5秒でApacheは一つのリクエストを処理しなければなりません。 実際は最初にURLで指定されたHTMLがダウンロードされた後,ブラウザーがHTMLを解釈し,そこに含まれる100の画像の一つ一つについて,サーバーに対してHTTPコネクションを張り,URLを投げて要求するわけですから,TCPセッションの起動コストだけみてもバカにならないと思います。 それに,1つのHTMLリクエストが実際には101のHTTPコネクションになるわけですから,ブラウザーの最大コネクション数が仮に10だったとすると,一度に張られるコネクションの数は 30クライアント x 10コネクション で300コネクション。これは,MaxClientの数値を越えてしまいますし,一つのブラウザーはそれを10回繰り返してようやくHTMLページを1枚表示できるようになるわけです。 もちろん上記の計算には,実効速度が1/3とか,ブラウザーの最大コネクション数が10とか,色々な仮定が含まれていますが,その見積が仮に8割の正確さだったとしても,かなり厳しい環境であることに違いはありません。 それはともかく,うまくいくかどうかはわかりませんが,思い付くチューニング方法を幾つか。 - MaxClientsを256より大きく出来るようApacheをコンパイルしなおす - KeepAliveは許さない - MinSpareServersを大きく取る - ログを抑制する とりあえずこんなところです。自信はありませんが。

yasado
質問者

お礼

海外出張も絡んだ為、お礼がすっかり遅くなってしまいました。申し訳ありませんでした。この場を借りまして、ご回答を頂きました皆様に御礼申し上げます。 さて結局ですが、当然といいますかMaxClientsを大きくしてMinSpareServersを大きく取るようにして対応しました。 もちろん自分ではある程度理解していたつもりではありますが、皆さんのお陰で自身を持って勧めることができました。 実際に運用を開始したところでは、想定していたより少な目のアクセスで良かったのですが、思っていたより通常のダイアルアップの接続が多くて慌てました。 本当にありがとうございました。

その他の回答 (3)

回答No.3

追記です。 既にご存知かもしれませんがApacheのパフォーマンスチューニングに関する記事です。 http://www.apache.jp/jdocs/tune/

参考URL:
http://www.apache.jp/jdocs/tune/
回答No.2

topコマンド等でCPUやメモリ使用量を監視していらっしゃるでしょうか? そのテストサーバーの性能に問題がある可能性も捨てられません。 abを使ってみるのもいいかもです。 http://www.zdnet.co.jp/help/tips/linux/l0500.html

参考URL:
http://www.zdnet.co.jp/help/tips/linux/l0500.html
  • takao
  • ベストアンサー率20% (34/170)
回答No.1

ぎりぎりの能力を試す評価をしたことがないので自信はないのですが、、、 実験でご使用になっているネットワークの太さとか、流れる トラフィックはどれくらいになるのでしょうか? 100Mbpsの容量で単純に計算した場合は、12.5MByte/secの転送能力になるわけですが、 そのあたりがボトムネックになっている可能性の話です。 ソースファイルに含まれる画像数を振って評価されると良いデータが得られそうですね。

yasado
質問者

補足

早速ありがとうございます。 さてトラフィック関係ですが、スイッチンブハブを介してサーバーを含む4台のみでテストしており、基幹からは切り離しています。 データ量はページ辺り約500KB程度ですので、仮に同時にアクセスしたとしてもタイムアウトが発生する30秒以内では十分に終わると思われます。 15MBの通信量に対して、仮に実効速度が1/3程度であったとしても数秒で終わってしまいそうな気がするのですが... 画像の数はちょっとやって見ます。違う結果が出れば報告します。

関連するQ&A

  • [apache]ブラウザでアクセスできない

    はじめまして. サーバー構築初心者です. 現在,RedHatマシンにapache2.0とWebDAVを導入しているのですが… 「apacheは起動するけれどブラウザで表示できない」 という状況で困っています. apacheはrpmではなくソースからインストールしました. httpd.confの変更箇所は ListenとServerNameのみです. <参考> Listen 81 ServerName IPアドレス:81 (80番ポート指定すると「既に使われているよ」的なエラーが出るので) apacheの起動は #/usr/local/apache2/bin/apachectl start で行い, 別PCのブラウザから http://IPアドレス:81 でアクセスしたのですが,繋がりません. ブラウザからアクセスできないということは apacheが正常に起動していないということなのでしょうか? 設定等何か足りないのでしょうか? ご回答よろしくお願いします.

  • RedHat7.1でapacheを使い、WEBサーバー公開したいが、公開できない。

    こんにちは Apacheについて悩んでいるものです。 現在、自宅サーバーを構築しようとシコシコとやっておりますが、LINUXをよくわかっていないので停滞しています。 それは、ローカルアドレス環境でWEBサーバーのページを開けないことです。 環境はRedHat7.1にApacheとPHP4をインストールし、サーバー自信から動作を確認しました。しかし、ほかのクライアントPCからブラウジングすると開かないのです。 なぜなのでしょうか。 FTPツールからもアクセスできないんですよね。 詳しい方、お助けください!

  • apacheのコンテンツ(html,cgi,php)にアクセスしようと

    apacheのコンテンツ(html,cgi,php)にアクセスしようとするとtomcatが応答してしまいます。 現在、CentOS5.4とApache2.2.3の環境でWEBサーバー構築の作業をしています 基本的な所はhttp://centossrv.com/apache.shtmlのサイト様等を参考にして、 設定を行い、テスト用のindex.htmlも用意しました。 早速http://localhost/index.htmlにアクセスした所、tomcatのインデックスページへと繋がってしまいました。 localhostを127.0.0.1やサーバー名に変更しても同様でした。 確認してみた所、現在同じ環境にtomcat5.5.23が存在しており、apacheと連携する様に設定されていて、 8080ポート指定無しでもtomcatが応答する様になっているようですが、 その設定の上で動いているWEBシステムもあるため、その辺りの設定をいじる事はできません。(検証用の一時的な変更もNG) tomcatとapacheの連携はそのままで、apacheのコンテンツにアクセスする為に、 apache側でどのような対応をしてやればよいか、ご教示いただけませんでしょうか。

  • httpsアクセスのみ可能にしたい

    RedHat7.3+apache-2.0.52+openssl-0.9.7eでwebサーバを構築し、http、httpsアクセスとも可能な状態です。 そこで、このwebサーバへのアクセスは、全てhttpsアクセスのみにしたいのですが、どのような設定、あるいは手法を実施すればよいのでしょうか?

  • RedHat9+Apache2でテストページしか表示しない

    RedHat9+Apache2でサーバ構築しようとしているところです。 Apache2は最新版をDLしてきました。 httpd.confの設定を変えたつもりなのですが、反映されてないようです。 DocumentRoot "/home/www" そのちょっと下 <Directory "/home/www"> としてApacheを再起動しますが、デフォルトテストページを表示したまま変化ありません。 もちろん/home/wwwにはindex.htmlを置いています。 どこを確認したら良いでしょうか? また、必要な情報がありましたらすく書き込みします。 以上お願いします。

  • Apacheでサーバ構築、ページが見れません。

    グローバルIPを設定していあるルーターにPCが繋がっていて、片方にPCでRedHat8、Apacheでサーバ構築中です。 もう片方のwin2000からサーバーへプライベートIPでアクセスすると問題なくページが見れます。 しかし、グローバルIPより直接アクセスすると見れません。 ですが、友人に外のネットワークからグローバルIPで直接アクセスしてもらうと見ることが出来ます。 ルータでバーチャルサーバを設定しましたがポートが開放されなかったので、DMZ設定をしたところ、ポートが開放されました。 よろしくお願いします。

  • apache+phpにおいてリクエストにHTTP/1.0で応答させたい

    apache+phpにおいてリクエストにHTTP/1.0で応答させたい apache1.3.29+php4.3.11環境において クライアントからのリクエストに対して、常にHTTP/1.0 で応答させたく httpd.confファイル中で LoadModule php4_module "D:\php\sapi\php4apache.dll" の前行に SetEnv downgrade-1.0 force-response-1.0 を追記しました。 しかし、 テスト用htmlファイルを作成し クライアントPCからhtmlファイルにアクセスした時はHTTP/1.0を応答するのですが テスト用phpファイルを作成し クライアントPCからphpファイルにアクセスした時はHTTP/1.1を応答してしまいます。 (確認はネットワーク解析ツールにて行っています。) ネットで調べるとphp.iniのcgi.rfc2616_headersが関係しそうだったのですが デフォルト(0)であればapacheの設定が有効らしく、そののままにしてあります。 php.iniやhttpd.conf、もしくは他のファイル等で何か設定しなければいけないのでしょうか? ご存知の方がいらっしゃいましたらお手数ですがお教えください。

  • Apacheのディレクトリ構成

    Apacheでテストサーバーを構築したいと思っています。 ディレクトリ構成は、 (1)/var/www/html/配下に通常のドキュメントを (2)/var/www/html/mrtg配下にMRTGのドキュメントを配置しています。 Apacheの設定DocumentRootは、/var/www/htmlです。 http://192.168.1.100/index.htmlでアクセスすると(1)が表示されます。 しかし、http://192.168.1.100/mrtg/index.htmlでアクセスすると、 403エラーになってしまいます。 その時エラーログには「client denied by server configuration: /var/www/mrtg/index.html」と表示されていました。 どうやら正しく(2)のアドレスを見に行ってないようなので、いろいろ試したのですがどうもうまくいきません。何が悪いのでしょうか?

  • Apacheの公開フォルダ変更

    自宅サーバを構築するためウェブサーバ Apache2.0.48を入れたwin2000proユーザです。 Apacheをインストールしたのはいいんですが、フォルダ変更ができずにいます。 (Apacheのテストページが常に表示されています) そこで質問です。 Apacheの設定で、webページが保存されているフォルダ(公開したいフォルダ)に設定をするとき、どうすればいいのでしょうか。

  • Apacheについて

    イントラネットの構築をしたのですがネスケの6.2ではうまく動作しません。 IEだとうまくいきます。Apacheの設定が悪いのでしょうか?それともネスケの設定に問題があるのでしょうか?HTMLのタグもきちんと記述してますし、どういった要素が考えられますか? OSはwindows2000serverでwebサーバにはapache_1.3.20を使用しています。データーベースにはオラクル8.1.6を使用しています。 よろしくお願いします。