先日からの続きです。

以下は先日の記事からの引用です
======================================================

2種類のリクエストが混在すること

また、我々が開発するような動的ページを中心としてサイトの場合、一回の(一連の)リクエストは通常

  • プログラムによる動的なhtmlの生成

数百ミリ秒~数秒を要する
通常は一連のリクエスト中の最初の一回

  • 上記のhtmlから参照される静的コンテンツ(css,javascript,画像等)

数ミリか数10ミリ秒以下の場合が多い
リクエスト数が多い(数10個以上)

の2種類から成り立ちます。
======================================================
というところからでした。

動的なページを含むサイトは非常に異なる性質の要求を同時に処理している

プログラムによる動的なhtmlの生成

一回の(一連の)リクエストの中で通常一件しか含まれません。その処理が済んだら、ユーザは暫くの間、その内容を読んでいるので、そもそもkeep-alive設定は必要ないわけです。

上記のhtmlから参照される静的コンテンツ(css,javascript,画像等)

こちらは上記とは逆に非常にkeep-aliveが有効なケースです。

この2種類の処理を同じ設定で対応するというところに矛盾があるわけです。

よって、以下の方法が一番良いというか、是非採用すべき方法だと思います。

  • 動的ページ用WWWサーバーと静的ページ用WWWサーバーは分離
    • もし、両者を分離する余裕がない場合(ここではある程度以上の規模サイトの話をしているので、そもそも余裕はあると思いますが)、バーチャルホストとして分離する等の方法を採用出来ます。
  • 動的ページ用WWWサーバーはkeep-aliveをOFF
  • 静的ページ用WWWサーバーはkeep-aliveをON
    • 更に、MaxKeepAliveRequests は一回の(一連の)リクエストあたりの平均的な要求ファイル数より少し(多くではなく)少なく設定
    • KeepAliveTimeoutは1-2秒程度の非常に短い値を設定
    • これはtcpコネクションが無駄に掴まれてしまうことをなによりも恐れるためです

最後にkeep-aliveに関する話題を挙げておきます。