- ベストアンサー
apacheで多数のアクセスを処理するには?
Redhat7.3+apache1.3.24でテストサーバーを組んでいます。 一時的にアクセスが急増しそうなサイトを構築するので、とりあえずテストとして MaxClient=250に設定しました。 評価用に100個の画像を含んだページを作成し、5秒ごとにリロードするようにしました。これを1PCあたり10個、合計3つのPC(Win2k+IE6)で動かしましたが、しばらくするとそのうちの10個程度が「サーバが応答しない」と文句を言ってきます。 ネットスケープやオペラを使っても同じようになりますので、クライアント側の問題ではないのかなぁとは思うのですが、apacheの設定に何か注意が必要なのでしょうか? ご存知の方がいらっしゃいましたらアドバイスをお願いします。
- みんなの回答 (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を大きく取る - ログを抑制する とりあえずこんなところです。自信はありませんが。
その他の回答 (3)
- sun_supinel
- ベストアンサー率35% (7/20)
追記です。 既にご存知かもしれませんがApacheのパフォーマンスチューニングに関する記事です。 http://www.apache.jp/jdocs/tune/
- sun_supinel
- ベストアンサー率35% (7/20)
topコマンド等でCPUやメモリ使用量を監視していらっしゃるでしょうか? そのテストサーバーの性能に問題がある可能性も捨てられません。 abを使ってみるのもいいかもです。 http://www.zdnet.co.jp/help/tips/linux/l0500.html
- takao
- ベストアンサー率20% (34/170)
ぎりぎりの能力を試す評価をしたことがないので自信はないのですが、、、 実験でご使用になっているネットワークの太さとか、流れる トラフィックはどれくらいになるのでしょうか? 100Mbpsの容量で単純に計算した場合は、12.5MByte/secの転送能力になるわけですが、 そのあたりがボトムネックになっている可能性の話です。 ソースファイルに含まれる画像数を振って評価されると良いデータが得られそうですね。
補足
早速ありがとうございます。 さてトラフィック関係ですが、スイッチンブハブを介してサーバーを含む4台のみでテストしており、基幹からは切り離しています。 データ量はページ辺り約500KB程度ですので、仮に同時にアクセスしたとしてもタイムアウトが発生する30秒以内では十分に終わると思われます。 15MBの通信量に対して、仮に実効速度が1/3程度であったとしても数秒で終わってしまいそうな気がするのですが... 画像の数はちょっとやって見ます。違う結果が出れば報告します。
お礼
海外出張も絡んだ為、お礼がすっかり遅くなってしまいました。申し訳ありませんでした。この場を借りまして、ご回答を頂きました皆様に御礼申し上げます。 さて結局ですが、当然といいますかMaxClientsを大きくしてMinSpareServersを大きく取るようにして対応しました。 もちろん自分ではある程度理解していたつもりではありますが、皆さんのお陰で自身を持って勧めることができました。 実際に運用を開始したところでは、想定していたより少な目のアクセスで良かったのですが、思っていたより通常のダイアルアップの接続が多くて慌てました。 本当にありがとうございました。