gearman を試してみた。

gearman は、キューイングシステムの一種。姉妹品に TheSchwartz というのもある。
特徴は、

  • サーバプロセスがとても軽量
  • クライアントがジョブを登録するとワーカーが即座に処理する

欠点は、

  • サーバはメモリ上でジョブを管理しているため確実性を求める処理に向かない
  • ワーカーの処理結果を期待する場合、タイムアウト処理が実装されていない

とのこと。

Ubuntu 9.04 で gearman サーバをインストールして動作を試してみた。

インストール

 $ sudo aptitude install gearman-server

/etc/default/gearman-server の修正

 # Change this to true to enable the germand server
 ENABLED="true"

ENABLED を "true" にしないと、

 $ sudo /etc/init.d/gearman-server start

してもサーバが起動しないので要注意。
もし、サーバ起動に失敗した状態でクライアントを実行すると、

Can't call method "syswrite" on an undefined value 
at /usr/share/perl5/Gearman/Taskset.pm line 201.

という不可解なエラーに悩まされるだろう。


同じワーカーを、複数立ち上げたり下ろしたり、クライアントを複数実行してみたり遊んでみた。
使えるかどうかはともかく、なかなか面白い動作だ。