monolog

monora log #=> ものろーぐ

Tag Archives: mod_mruby

mod_mruby on FreeBSD

FreeBSD Programming

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 4626.193

な……何故か、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