Index: [Article Count Order] [Thread]

Date: Mon, 26 Aug 2002 04:25:19 +0900
From: keita yamaguchi <keita@kyomu.info>
Subject: [webrickja:37] accelerator
To: WEBrickML <webrickja@notwork.org>
Message-Id: <20020826042519.0745e599.keita@kyomu.info>
X-Mail-Count: 00037

はじめまして、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/