« 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