C10K問題

提供: MonoBook
ナビゲーションに移動 検索に移動

C10K問題英語:c10k problem)とは、なにも考えずに設計されたサーバーシステムは、10K(10 x 1000 = 10000)クライントくらいの同時アクセスでサーバーダウンすることが多いという話である。

概要[編集 | ソースを編集]

主にApache HTTP Serverで問題になったもので、ハードウェア的には20世紀末のパソコンでも1万クライアントくらいなら余裕で捌けるが、そのうえで動くソフトウェアの設計が悪いと限界が訪れるという問題です。 なお、数百クライアント程度でパンクするようであればソフトウェアの実装に何かしらの問題があると考えた方がよい。

同時接続数にして「1万」、1つのウェブブラウザが4〜8並列でサーバーに繋いでくることを考慮しても「同時アクセス1000人くらい」が基準となります。なお、1日1000人でも、1分1000人でもなく、1秒1000人くらいの世界の話であり、そのレベルに到達する大人気ウェブサイトなどほとんどないため一般人には無縁の話です。

ちなみに2001年末に田代砲の被害にあった米TIME紙のサーバーは余裕で耐えた。これは設計が良かった事例である。

対策[編集 | ソースを編集]

HTTP[編集 | ソースを編集]

この対策としてウェブ界隈ではNginxが大流行した。

なお、Nginxの上で動くウェブサービスの設計が悪いとどうにもならない。このくらいの規模になってくるとウェブサービス側を全面的に「ステートレス通信」に書き換えるなどの対策も同時に行わないとだんだんと苦しくなる。

耐久試験ツール[編集 | ソースを編集]

かつてはC10Kの耐久試験ツールも沢山あったが、「田代砲」「アパッチ砲」「ゲイツ砲」などとして悪用される事例が多発したためか、現在では公に配布されているものは少ない。

この手のツールを社内LANなんかで使う前提の商用業務システムなんかで試すと、残念ながら世の中には同時1万アクセスどころか同時100アクセスくらいで落ちるシステムも多々存在しているのが実情である。

関連項目[編集 | ソースを編集]