NeverBlock for MySQL

前回のポストで来るRails2.2のマルチスレッドとそれに伴うコネクションプーリングが実装されるという話を書きましたが、現状のRailsでもコネクションプールのようにパラレルにDBに対してクエリを投げることができるactive recordのアダプター「NeverBlock」が大きな話題になっています。

このアダプタは、Ruby1.9のFiberを1.8系にポートしたPoor Man's Fiberを使って実装されたもので、Ruby1.8系で動作し、Railsをサポートしています。

このNeverBlockはDBはPostgresまたはMySQLをサポートし、EventMachineと組み合わせることで劇的にパフォーマンスを向上させることができるようです。

では、実際にNeverBlock for MySQLを使ってみたいと思います。

まず、上記サイトからNeverBlockをチェックアウト。

git clone git://github.com/espace/neverblock.git


続いて、MySQL用ドライバ、カスタマイズされたEventMachineをチェックアウト。

git clone http://github.com/espace/mysqlplus.git

git clone http://github.com/espace/eventmachine.git



それぞれgemをビルドし、インストール。

gem build [それぞれのgem名].gemspec

gem install [それぞれのgem名].gem


現状対応しているアプリケーションサーバはthinとmongrelのみで、config/environment.rbに、thinを使う場合は

require 'never_block/frameworks/rails'

require 'never_block/servers/thin'



mongrelの場合は、

require 'never_block/frameworks/rails'

require 'never_block/servers/mongrel'



と記述。

そしてdatabase.ymlのアダプタを

adapter: neverblock_mysql

に変更します。これでNeveBlockを使うことが可能になります。またdatabase.yml内に

connections: [数字]


というパラメータを足してやれば、コネクション数を設定可能です。(記述しない場合はデフォルトの4になります)

NeverBlockを使うことで特に高負荷時にパフォーマンスが劇的に向上するようです。

投稿されたコメント:

コメント
  • HTML文法 不許可
About

Tomo

Search

Archives
« 4月 2014
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
今日