C10K問題(クライアント1万台問題)
- アクセスするクライアント数が1万を超えると、サーバーのスレッド(並列処理の単位)数が増え、サーバーのメモリーなどのリソースが不足してしまう問題
- 処理能力に余裕があっても、クライアントの数が多くなると効率が悪化しサーバがパンクする
- プロセッサの処理能力には余裕があっても、サーバの台数を増やさなければいけなくなってしまう
回避方法
- サーバーサイドではイベント駆動方式を利用しているNode.jsなどを使用する
- イベント駆動により大量のリクエストを同時に処理できるスケーラビリティを備えている
- ノンブロッキングI/Oモデルにより、C10K問題に対応する
Node.jsとは
スケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動のJavaScript環境
Node.js
- それぞれの意味
- スケーラブル : 拡張性が高い
- 非同期 : 各要求(request)の処理が完了するのを待たずに、それ以降の処理を行う方式
- イベント駆動 : イベントと呼ばれるアプリや端末上で起きた出来事に対して処理を行うプログラムの実行形式
- 特徴
- サーバーサイドで使用できる
- ノンブロッキングI/Oモデルを採用しており、I/Oの処理を待たずに次の処理を始めることができるので、大量のデータ処理が可能
- ノンブロッキング : ある処理を行いながら、ほかの処理も同時進行で行えること
- I/O : Input/Outputの略で、入出力の意