はじめまして、keitaと申します。
最近WEBrickを高速化しようと色々と試行錯誤してまして、
多少なりとも改善できた部分があるのでこれをパッケージにしてみました。
http://kyomu.info/obj/comp/archive/webrick-accelerator-0.1.0.tar.gz
いじってるのはまだ次の二点ですが、
これだけでもそれなりに高速化できます
(自分の環境では requests/sec の値が倍以上に伸びます)。
* timeout
タイムアウト処理におけるスレッドの new & kill の負荷が
大きいのでこれを軽減するtimeoutxライブラリを作成しました。
一応汎用性を期待して別パッケージにしてこれを使用しています。
http://kyomu.info/obj/comp/archive/ruby-timeoutx-0.1.0.tar.gz
* zero copy
Linux依存になりますが、システムコール sendfile を使って
zero copy 通信をするようにしてみました。
これもインターフェイス部分は汎用性があるかと思って
別パッケージにしています。
http://kyomu.info/obj/comp/archive/ruby-sendfile-0.1.1.tar.gz
これで改善されるのは静的なコンテンツの転送くらいなわけで、
一般的なWEBrickの使用目的から考えるとあまり効果的でないかも知れませんが
部分的にでも速いに越したことはないと思います。
ちなみに 1.1.5 のみを対象にしてて、
スナップショット版には対応していないのでご注意下さい。
使い方は全部のパッケージをインストールして
'require "webrick/accelerator"'するだけです。
Linux以外のOSを使っている方はtimeoutxのみ使ってみて下さい。
こっちもインストールしてから'require "timeoutx"'だけです。
timeoutxのみでだいぶ負荷を軽減できます。
---
Name: 山口 慶太 (keita yamaguchi)
Mail: keita@kyomu.info
URL : http://kyomu.info/