C10K問題
C10K問題(英語: C10K problem)とは、Apache HTTP ServerなどのWebサーバソフトウェアとクライアントの通信において、クライアントが約1万台に達すると、Webサーバーのハードウェア性能に余裕があるにもかかわらず、レスポンス性能が大きく下がる問題である。
原因
[編集]この現象の原因は主に2019年現在も広く用いられているApache HTTP Server(以下「Apache」)の駆動方式にある。
Apacheはクライアントの接続一つ一つに対してプロセスを生成する仕様となっている。そのため大量のクライアントから接続があった場合、その数だけプロセスを生成しなければならない。しかし、WindowsあるいはLinuxなどのUNIX系OSでは、同時に起動できるプロセスに32767(215-1)個の制限がある。この制限を超えるとプロセスを新規生成することができなくなるため、既にあるリクエストの処理が終わるまで新たな接続は待たなければならない。これがC10Kの主な原因である。
回避方法
[編集]C10K問題を回避するためには様々な方法がある。
- Nginxなど、C10K問題が起こらないように設計されたソフトウェアを使用する
- サーバーサイドでNode.jsなどの駆動方式を持ったソフトウェアを使用する