This link has been bookmarked by 20 people . It was first bookmarked on 10 Jan 2007, by kazuyuki kohno.
-
26 Apr 14
-
HTTPサーバのApacheなどはクライアント1台からのリクエストに対して1つのプロセスを生成する
-
1スレッド当たりデフォルトで2MB程度のスタックメモリを割り当てる
-
-
07 Oct 11
-
Lingrのような軽いサービスでネックとなるのはプロセッサパワーでもストレージのI/O速度でもネットワーク帯域でもない。同時接続ユーザー数が万のオーダーに達したとき、現在のOSやサーバのプログラミングモデルが現実に合わなくなってくることだ。
LinuxなどUNIX系のOSでは、メモリ上で実行中のプログラムに与えられるプロセス番号は符号付き16ビット整数だ。つまり、デーモン(サーバプロセス)も含め、すべての実行中のプロセスには1~32767までのユニークな番号が与えられていることになる。ところが、HTTPサーバのApacheなどはクライアント1台からのリクエストに対して1つのプロセスを生成するため、必然的に同時接続数は3万クライアント程度が上限となる。IRCのように参加者が能動的に発言するとは限らず、時間があるときや必要なときにだけ発言するような利用法であれば、ハードウェア性能的にもネットワーク性能的にも1台のサーバで10万クライアントを扱うことができても、プロセス番号が足りないという理由でこのモデルは破綻する。
-
多くのOSでは、万単位のスレッド生成ということを前提として設計されていない。例えば、特別な設定をしていないLinuxでは、1スレッド当たりデフォルトで2MB程度のスタックメモリを割り当てる。1万クライアント=1万スレッドであれば20GBのメモリが必要になる。これでは、仮想メモリを使うとしてもパンクしてしまう。
-
-
22 Mar 08
-
05 Mar 07
-
04 Mar 07
-
13 Jan 07
-
10 Jan 07
-
-
LinuxなどUNIX系のOSでは、メモリ上で実行中のプログラムに与えられるプロセス番号は符号付き16ビット整数だ。つまり、デーモン(サーバプロセス)も含め、すべての実行中のプロセスには1~32767までのユニークな番号が与えられていることになる。ところが、HTTPサーバのApacheなどはクライアント1台からのリクエストに対して1つのプロセスを生成するため、必然的に同時接続数は3万クライアント程度が上限となる。
-
-
06 Jan 07
Page Comments
Would you like to comment?
Join Diigo for a free account, or sign in if you are already a member.