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が必要。