« mirror2/mirror2bの接続障害について | メイン | 輸入CD制限法案が通過しそう »
2004年06月01日
Webサーバーの最大接続数について
・同時接続セッション数
同時接続セッション数とは、Webサーバーに張られるセッションの合計です。
同時接続ユーザー数×各ユーザーの接続セッション数=同時接続セッション数
100人が10セッションでの接続を継続する場合は同時接続セッション数は1,000で、
そのうち5人が100セッションで接続すると、5×100+95×10=1450です。
なお、標準的なWebブラウザーは最大10セッションでアクセスを行います。
また、標準的なWebページは瞬間的には10セッションに達する場合がありますが、
セッションを閉じる期間が十分に長いため、1ユーザーが10セッションを占有することはありません。
そのため、100人が接続しても、平均的な同時接続セッション数は100近辺です。
・システム能力
昔はWebサーバー(アプリケーション)の最大接続数が100~250程度でした。
古いブロードバンドルーターのNATセッション数は最大500程度だったようです。
現在はWebサーバーの処理がスレッド化されて、多くの接続ができるようになっています。
ブロードバンドルーターのNATセッション数は、最近の機種では最大2,000~4,000です。
OSのLAN接続可能数は、チューニングにより65,536まで上げています。
システムとしては、1,000セッションでは問題なく、2,000セッション前後から遅延が生じる状況です。
fuzzy2.comの一般のサーバーの運用状況は、1,000前後のセッション数となっています。
mirror2/mirror2bは夜間の一部にシステム上限(2,600)に達したため、深刻な状況になりました。
なお、mirror2bのセッション数は、サーバーの総セッションの99.6%を占めています。
・セッション数飽和の原因
Webサイトのダウンを意図するDoS攻撃ではないと認識しています(こちらは別途対策済みです)。
大量の画像ファイルのダウンロードが発生するページデザインが主要因と推測されます。
各ユーザーが長期間10セッションを保持し続けるため、システムのセッション数が拡大しています。
HTMLダウンロードツールやアクセス加速ツールの使用が確認されていますが、これは副要因と推測されます。
・アクセス集中するWebページの作成指針
1ページ内に置く画像を8枚以下に抑えて、セッション数の拡大を防ぐ必要があります。
HTML(またはCGI、PHP)、CSS、イメージのファイル数が合わせて10以下になるよう設計してください。
1ページの転送量(HTML、CSS、イメージの合計サイズ)は50KB以内を目標としてください。
大きな画像を分割して複数のイメージファイルに置き換えるのは、悪い方法です。
また、小さな画像が大量にある場合は、大きな画像にまとめて1枚のイメージファイルとして掲載する方法が効果的です。
転送サイズが同じでも、セッション数が少ないため表示が速くなり、サーバーの負荷も低くなります。
上記の対策が取れない場合は、複数のサーバーにコンテンツを分割するか、
DNSラウンドロビン方式など複数のサーバーでの運用システムを利用するか、
画像を別サーバーに設置してアクセスの流れを分散する方法があります。
投稿者 fuzzy : 2004年06月01日 23:00