C10K
@naoya_ito: C10K の話、参考になるかどうかわかりませんが当時の現場感を思い出してみます。以下その話
https://t.co/HAdhDOUiwc
@naoya_ito: C10K の点で、まだ lighttpd や nginx のようなシングルスレッドのイベントモデルの HTTP サーバーがない、つまり Apache を使ってた頃に頭を悩ませていた問題は二つあった。
Webサーバアーキテクチャの基礎知識#642b9b113f442500002495da
1. Reverse Proxy の性能が低い
Reverse Proxy に Apache を利用=マルチプロセス/マルチスレッドでサーブしていると、
メモリの上限もしくはOSのコンテキストスイッチに伴うCPU負荷 (主に user ではなく system での負荷) のどちらかでサチってしまい、サーバーを横に追加する必要があった
@naoya_ito: LIGHTTPD がリリースされて、Reverse Proxy を lighttpd に変更したところこの二つのいずれの問題も起こらないので、問題はそれだけで解消できました。とうじ、多分 Reverse Proxy だけで数十台近くあったサーバーが2台とかに集約されたような記憶があります
Reverse Proxy がなぜ必要か - naoyaのはてなダイアリー
@naoya_ito: そして Reverse Proxy の件はクラウド時代になってから CDN がその辺の仕事を担うようになったので、より問題にならなくなった感があります。
2. コネクションを維持したいクライアントがたくさんくると、サーバーリソースが無駄になる
Comet(?)をナイーブにやるとサーバーのスレッドが占有されてしまう
待ち時間でサーバーが仕事しないということkadoyau.icon
@naoya_ito: 同時にコネクションを受け付けられるクライアント数が、スレッドを生成できる上限、つまりメモリ容量に制限されてマシン性能をぜんぜん使いきれない、ということがありました。
これも lighttpd や Node.js のようなイベント駆動モデルのサーバーが使えるようになって解決されたような気がします。