merb with evented_mongrel

このまえ merb のバージョンを上げたのでソースを見てみたら merb.rbに

if ENV['SWIFT']
  require 'swiftcore/swiftiplied_mongrel'
  ...
elsif ENV['EVENT']
  require 'swiftcore/evented_mongrel' 
  ...
elsif ENV['PACKET']
  require 'packet_mongrel'
  ...
else
  require 'mongrel'
end

のようなソースコードが!

evented_mongrelを使う下準備

gem install swiftiply

Merb.rootで

EVENT=1;export EVENT; merb  

とすると、Using Evented Mongrel...の文字が!
以下、処理の無いコントローラのab ベンチマーク結果
通常のmongrel

Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      138000 bytes
HTML transferred:       4000 bytes
Requests per second:    521.03 [#/sec] (mean)
Time per request:       57.579 [ms] (mean)
Time per request:       1.919 [ms] (mean, across all concurrent requests)
Transfer rate:          69.82 [Kbytes/sec] received

evented_mongrel

Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      138000 bytes
HTML transferred:       4000 bytes
Requests per second:    954.74 [#/sec] (mean)
Time per request:       31.422 [ms] (mean)
Time per request:       1.047 [ms] (mean, across all concurrent requests)
Transfer rate:          127.94 [Kbytes/sec] received

うは、ほぼ倍に!!
ただし SQLの処理とかいろいろ入っているやつで試したところ、360req/sec → 400req/sec くらいだった。

merbは Rack対応しているので、thinなどにもスムーズに対応できそう。ただthinには ruby-1.8.6が必要。