Monoceros雑感
Monoceros は @kazeburo さんが開発してる Plack 用ウェブサーバ。prefork型だけど、待機中の接続をイベントドリブンのマネージャで管理することで、同時接続10,000本とか行ける(ソケットの受け渡しは SCM_RIGHTS とか使う)。
で、雑感
- 大好き!!!
- Starletより遅い問題は、以下のようにすれば解決できると思う
- HTTP/1.1 のパイプラインサポートも上記の方法でサポートできるはず
待機のみをイベントドリブンでやってリクエストのパースとレスポンスの送信を prefork でやるというアプローチは、アプリケーションの処理のみを prefork でやってそれ以外は全てイベントドリブンでやる nginx + Starman / Starlet みたいなアプローチと比べると、slowloris 攻撃等への耐性という点で難があることは確かです。ですが、それへの対処が可能な場合、あるいは、リバースプロキシの裏側で大規模な持続的接続が必要な場合(都度接続やってると TIME_WAIT があふれるとか)はとてもいい手法だと思います。