ジョブ
ジョブ workerのメンテナンス
ジョブ wokerの理解MogileFS は、HighLevelOverviewに記載したように、トラッカーごとにかなりの数のジョブ wokerを持ちます。これらのほとんどのジョブは、処理スピードを増強するために、実行時にスケールアップあるいはスケールダウンすることができます。 query workersquery 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 workerreaperは最近'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 するのはよい方法です。全て終わるまで待ち、それから再びそれらを起動します。 |