• ベストアンサー

apacheの同時接続数とリクエスト数について

同時接続数についてですが、KeepAliveをOffにしていた場合、 1接続で1プロセス起動し処理すると思うのですが、 仮に、1ページに20枚の画像があったとすると21リクエスト、 1ページを表示するのに、html+20枚=21プロセスが必要という事になりますか? そのページを表示させているクライアントは1台のPCでも、 同時接続数=21 となってしまうという事になるのでしょか? 初歩的な質問なのかもしれませんが、ご教授頂ければと思います。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

ブラウザは必要なリクエストを全部同時に出すわけではありません。設定によりますが、標準的には4リクエストずつ出します。 1. まずHTMLをリクエストして取得 2. HTMLを解析して20の画像が必要と判断 3. そのうち4つの画像をリクエスト 4. どれかの画像が返ってきたら残りのなかから1つをリクエスト 5. 4をのこりが無くなるまで繰り返す この場合、クライアントが1台なら最大4プロセスが働きます。 べつに4プロセス必要というわけでもなく、最大1プロセス起動するという設定でも、待ちが長くなるだけで問題ありません。クライアントが多いと長くなりすぎてタイムアウトする可能性もありますが。

その他の回答 (2)

回答No.3

>1ページを表示するのに、html+20枚=21プロセスが必要という事になりますか? 最近のapacheにおいては、1接続=1プロセスとは限りません。 preforkを使用していればその通りなのですが、workerを使用している場合は、プロセスごとにスレッドを複数持ち、各スレッドが接続を受けもちます。(各子プロセスがマルチスレッドということ) html+20枚=21接続ではないというのは他の方の回答通り。

  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

RFC2616 で、WWWブラウザ(クライアント)は、一つのサーバに対しては、 リクエストは同時に最大2本までにすべき、と決められています。 http://www.google.co.jp/search?q=RFC2616+%93%AF%8E%9E%90%DA%91%B1%90%94 たいていのWWWブラウザはこのルールを守っていますので、 一つのサーバに対して送りたいリクエストが多量にある場合でも、 接続数は2本以内という範囲で、あるリクエストが処理されたら次のリクエストを送る、という処理を行います。 つまり、質問者さんの仮定しているような状況では、同時接続数=2になります。

関連するQ&A