mod_mrubyをFreeBSDで動かそうとして詰まるの修正点が変わってしまったのと、mod_mrubyが更新されてEvent MPMとWorker MPMでも動くようになったようなので再チャレンジしてみました。
FreeBSDでのmakeのやり方がまた変わってしまったので後述します。
とりあえずベンチマークの結果から。
$ cat test.txt Hello! $ cat test.rb #!/usr/local/bin/ruby print "Content-type: text/plainnn" print "Hello" $ cat test.mrb Apache.rputs("Hello") Apache.return(Apache::OK)
検証機のスペック: IBM ThinkCentre A55 (9636-A16)
CPU: Core2 duo E6300@1.86GHz
RAM: DDR2-SDRAM 1GB
LAN: Broadcom Gigabit Ethernet
Apache/2.2.23 (FreeBSD), mod_fcgid/2.3.6
Varnish(3.0.3)がリバースプロキシとして動いているので参考値であることをご了承ください。
abの条件は前回と同じく下記の通りで、3回計測して平均を取っています。
$ ab -n 100000 -c 100
Type | req/s |
---|---|
Plain Text | 6318.693 |
Ruby 1.9.3p194(mod_fcgid) | 5159.423 |
mod_mruby | 6700.153 |
な……何故か、FastCGIのrubyに負けてますが、このような結果となりました。
2013/2/17 21:15追記:
mod_mrubyの作者である @matsumotory さんがこんな事を仰っていたので最新版をビルドし直して再測定しました。は、速い…
mod_mrubyはApacheのモジュールとかを書くのに面白く使えそうなので、そちらの道を模索してみたいなぁ……と
FreeBSDでmod_mrubyを使うためには、またちょこっと弄る必要があるみたいです。
$ git submodule init && git submodule update $ cd mruby
mruby本体のビルド設定に-fPICを付ける。
$ nano tasks/toolchains/gcc.rake 4: cc.flags = [ENV['CFLAGS'] || %w(-g -O3 -Wall -Werror-implicit-function-declaration -fPIC)]
makeではなくgmakeを使う。
$ rake $ cd .. $ ./configure $ gmake && gmake install
この2点だけです。エラーが読めない人間には辛い……
もう httpd.conf が mod_mruby を読み込むよう設定されているはずなので、 Apache を再起動させれば終わりです。
$ httpd -k restart