tokuhiromのgearman の worker process にスコアボードをつけてみる (git) のスコアボードをネットワーク越しに確認できるようにしてみた。

git: http://github.com/kazeburo/gearman-starter.pl


具体的にはworkerのloopに入る前に指定したportをlistenするプロセスをforkして、そいつにアクセスすることで、ステータス(スコアボード)を取得できる。

ステータスを表示するために—port と —listen の2つのオプションを追加した。起動は

% perl -Ieg/lib ./gearman-starter.pl -s 127.0.0.1:7004 --scoreboard-dir /tmp/test --listen localhost --port 7005 MyWorker

な感じ。telnetでport 7005にアクセスすると、すぐにステータスが返ってくる

起動直後

% telnet localhost 7005
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
BusyWorkers: 0
IdleWorkers: 10
--
pid       Status Counter Comment
15785          . 0
15786          . 0
15787          . 0
15788          . 0
15789          . 0
15790          . 0
15791          . 0
15792          . 0
15793          . 0
15794          . 0

Connection closed by foreign host.

clientを動かすと、

BusyWorkers: 1
IdleWorkers: 9
--
pid       Status Counter Comment
15785          _ 2
15786          _ 4
15787          . 0
15788          . 0
15789          . 0
15790          A 1 127.0.0.1:7004//H:vs1-1:94425
15791          . 0
15792          . 0
15793          . 0
15794          . 0

のように変化する。pidが「15790」がActive(Busy)になってるのがわかる。

これで監視ができるゥ。

あと、Gearman::Worker->workは内部で無限ループする。ループを止めるにはstop_ifのcallbackを渡す必要があるので注意

このブログ記事について

このページは、Masahiro Naganoが2010年7月 7日 11:17に書いたブログ記事です。

ひとつ前のブログ記事は「NoPasteを作るためにsinatraライクなWAFを書いてみた」です。

次のブログ記事は「CloudForecastの監視項目のカスタマイズ方法」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja