afnf.net

keepaliveを有効にするべきか

keepalive チューニング 2014/03/30 19:08

heartbeat的なやつじゃなくて、HTTP持続的接続の話しです。

結論

コンテンツによるが、安全側に倒すなら無効にするべき。

考察

blog-java1では、keepaliveは無効にしています。有効にしても、使われるTCPコネクションは1~2本しか減りません。ブラウザがリクエストを並列発行するためです。

20140330_browser_network


blog-java1ようにコンテンツが少ないサイトでは、keepaliveの有効化はサーバリソースの浪費を招くだけです。特にnginxのkeepalive_timeoutはデフォルトで75秒なので、負荷状況によっては意図せずコネクション数上限に達してしまうかもしれません。

keepaliveを有効にするべき状況は、設定対象のFQDNから取得するコンテンツが多い場合ですが、最近のブラウザは、1FQDNに対して少なくとも6並列程度のリクエストを行うことに注意が必要です。

http://stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser
ちなみにRFC2616では2を超えるべきでないとされています。まあ15年前の文章ですからね。

JavascriptやCSSは集約するのが普通でしょうから、考えるべきは画像ぐらいでしょうか。「同時にリクエストされる画像が12枚以上」という目安が良さそうです。とはいえ、小さな画像はCSS Spritesで集約できるし、大きな画像は遅延ロードするべきなので・・・

SPDY or HTTP2.0で全て解決!

なんですよね。ChromeやFirefoxはもちろん、Windows8.1上のIE11もSPDYに対応しているので、keepaliveは過去の技術になっていくのでしょう。

参考

間違いだらけのWEBサーバ Keep-Alive
 http://d.hatena.ne.jp/uratch/20100710/1278739858

KeepAliveについて考える
 http://nosa.cocolog-nifty.com/sanonosa/2004/06/keepalive.html

keepalive チューニング 2014/03/30 19:08
comments (0)

blog-java2 engine (build:2019-02-23 17:57 JST)