Project Home Downloads Wiki Issues Source
ジョブ  
ジョブ workerのメンテナンス
Updated Jan 9, 2012 by dorma...@rydia.net

メンテナンスページに戻る

ジョブ wokerの理解

MogileFS は、HighLevelOverviewに記載したように、トラッカーごとにかなりの数のジョブ wokerを持ちます。これらのほとんどのジョブは、処理スピードを増強するために、実行時にスケールアップあるいはスケールダウンすることができます。

query workers

query workerは アプリケーション/クライアント と唯一直接やり取りをするworkerです。クライアントがmogilefsと接続する時に、parent プロセスと接続を確立します。このことは、何もしていない接続は個々のquery workerプロセスを利用しないまたは持っていないことを意味します。

リクエストが発行されると、親プロセスは処理のためにリクエストを何もしていないworkerプロセスに送信します。何もしていないプロセスが利用できない場合、リクエストは後で処理するためにキューされます。!statsコマンドを使って、先延ばしされているクエリと利用中のqueryworkerの平均の数を監視することができます。

あまりにquery workerを持ちすぎると、トラッカーとデータベースに不要な負荷を与えるでしょう。workerはデータベースから取得した幾つかの共通のデータについて簡潔なキャッシュを持ちます。

ジョブ マスター

job_masterプロセスは特別なworkerです。トラッカーのインスタンスあたり最大で一つだけあります。The job master consolidates fetching jobs to process from database queues. It monitors and populates the internal work queues for delete, replicate, fsck, etc. それは永続および共有するキューのgearman job サーバに似ていますが、もっと軽いです。これは最近2.3で導入され、トラッカーのスケーラビリティの向上に多いに役立っています。個々のworkerはもうデータベースをポーリングする必要が無くなったため、数を増やしても無駄な負荷が起きません。

workerの削除

キューの削除処理削除されたあるいは上書きされたファイルを永続的に削除する。そしてアップロードに失敗した死亡したtempfileを削除する。file_to_delete2テーブルがあまりにも拡大した場合は、もっと追加してみてください。

reaper worker

reaperは最近'Dead'と印を付けられたデバイスをすばやく処理します。reaperはThey delete the location of copies files might have on the dead devices, and schedule replication to attempt to repair the files. workerはデバイスの消失からの速やかなリカバリをとても積極的に促進します。

監視 worker

監視workerはもう一つのunique-per-tracker プロセスです。監視は絶えず全てのデバイスに連絡をとり、どれが利用可能でオンラインであるかを知るためにデータベースをチェックします。If a device becomes unavailable on its own, it's the job of the monitor process to note that change to all the workers a tracker runs, and to note its return if it does.

リプリケーション worker

リプリケーションworkerはMogileFSの魔法のファイル管理の肝です。ファイルをリプリケーションポリシーと対照してチェックし、ポリシーの命令に基づいて特定の場所にもっとコピーするでしょう。それは、drain と rebalance も扱います。もしファイルをリプリケートするのに時間が掛かりすぎることに気づいたら、少しだけworkerを増やしてください。

TODO: チューニングとリプリケーションのオプションの別個のページを追加する。

workerの数を調整する

jobは /etc/mogilefs/mogilefsd.conf ファイルの中で指定されるように多くのworkerで始まります。workerは監視され、!jobs!want コマンドを使って動的に調整することができます。

残念ながら、それらのコマンドはmogadmコマンドを使って簡単に整備できないですが、調整するために個々のtrackerにアクセスします。

$ telnet localhost 7001
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
!jobs 
delete count 1
delete desired 1
delete pids 3736
fsck count 1
fsck desired 1
fsck pids 9012
job_master count 1
job_master desired 1
job_master pids 3769
monitor count 1
monitor desired 1
monitor pids 3767
queryworker count 30
queryworker desired 30
queryworker pids 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 23113
reaper count 1
reaper desired 1
reaper pids 3768
replicate count 4
replicate desired 4
replicate pids 32669 32670 32671 32672

jobの調整は単純です。

!want 5 fsck
Now desiring 5 children doing 'fsck'.
.
!want 1 fsck
Now desiring 1 children doing 'fsck'.
.

workerを少なくするリクエストは、親プロセスにworkerをゆっくりとkillさせます(作業が終わると優雅に)。workerを多くするリクエストは親プロセスにもっとworkerをspawnさせます。workerを全て停止またはリセットしたい場合は、!want 0 replicate するのはよい方法です。全て終わるまで待ち、それから再びそれらを起動します。


Sign in to add a comment
Powered by Google Project Hosting
TOP
inserted by FC2 system