クロール三角関係

こんにちは。

SharePoint サポートチームのたらかわです。

実は、先月半ば頃から風邪を変な風にこじらせたらしく、咳が止まらなくて大変でした。ようやく咳が治まってきたと思ったら、今度は肋骨の左のほうがズキズキと痛むですよ。。病院に行ってみたら、何と肋骨が折れてました。(正確には疲労骨折といって軽くヒビが入っただけなのですが。) 自然治癒にまかせるしかないので、湿布を貼ってしのいでいるのですが、毎回くしゃみをするたびに悶絶している今日この頃です。

さて、先週は社内行事などで色々忙しかったので、あまり凝ったネタを提供できず申し訳ないのですが、今回はちょっとした小ネタをご紹介しましょう。

問題:増分クロールのスケジュールを 5 分おきに設定したときに、1 回のクロールに 5 分以上かかる環境だと次にスケジュールされたクロールはいったいどうなるのか?

A) クロールがもう一つ別スレッドで走る

B) そのスケジュールは無視される

C) そのスケジュールは待機キューに入れられ、直前のクロールが終わった後すぐに実行される

…答えは、「B) そのスケジュールは無視される」です。

無視されたスケジュールには申しわけないですが、同時に 2 つのクロールを実行してインデックスサーバーに負担をかけるよりも、現在クロール中の処理を早く終わらせることがのほうが重要です。

心配しなくても、現在進行中のクロールが完了すれば、次のスケジュールではちゃんとクロールが実行されます。

もう少しわかりやすく解説すると、次のような動作になります。

(5 分おきにクロールする設定の場合)

0:05 増分クロール A 開始

0:10 増分クロール B 開始…しようとしたけど、まだ前回のクロールが終わってないので今回はスキップ

0:12 増分クロール A 完了

0:15 増分クロール C 開始

いかがでしょうか。

ちなみに、WSS 3.0 で使用される Windows SharePoint Server Search サービスでは、スキップされたクロールの心の叫びが診断ログに残ります。(補足:Office SharePoint Server Search では残らないようです。)

例えば、上記の状況では、以下のようなメッセージが診断ログに残ります。

------------------------------------------

07/15/2009 00:10:00.00 OWSTIMER.EXE (0x0758) 0x07BC Search Server Common MS Search Administration 8ijm Verbose WSS Search: Skipping start address cleanup phase because the default content source is not idle (status = CRAWLING_INCREMENTALLY).

------------------------------------------

「既定のコンテンツ ソースがアイドルではないため、開始アドレスのクリーン アップ処理 (クロール開始時の処理) がスキップされました。(ステータス = 増分クロール中)」と書いてありますね。

つまり要約すると、「あ、私、お邪魔みたいだから帰るね。ごめんね、なんか、余計なお世話だったよね。あとは 2 人で楽しんで! (その帰り道) …あはは、私一人で空回りしちゃって、馬鹿みたい。…さようなら。」的なドラマが繰り広げられているというわけですな。

…切ない。

男として、ここで甲斐性を見せて 2 つのクロールを同時進行させたいところですが、現実はそう甘くは無く、現在進行中のクロールを維持するだけでインデックス サーバーのキャパは一杯なわけです。下手に小細工しようものなら、その場は修羅場と化し、何とか器用にその場を取り繕ったとしても、クロールって意外とリソース要求されるわけで、色々やっているうちにいずれはボロがでて、後々大変なことになるわけですよ。…あ、あくまでクロールの話ですよ、もちろん!

…あ、あれ?何の話してましたっけ?

ま…まぁ、そういうわけですので、ことクロールにおいて、MOSS 2007/WSS 3.0 は 「誠実な動作をする」 ということを覚えておきましょう。

- 補足

上述の診断ログは既定の設定では記録されません。

WSS 3.0 の Windows SharePoint Server Search サービスでクロールがスキップされたことを確認するには、以下の手順にて、診断ログの設定を変更する必要があります。

診断ログの設定を変えると、ログのサイズが予想以上に大きくなったりしますので、トラブルシュートなどの特別な目的がなければ、既定の設定でお使いいただくことをお勧めします。

<診断ログの設定変更手順>

1) サーバーの全体管理サイトにアクセスします。

2) [サーバー構成の管理] をクリックします。

3) [ログおよびレポートの作成] セクションの [診断ログ] をクリックします。

4) [記録されるイベントの設定] セクションで以下のように設定します。

   カテゴリの選択:MS 検索管理

   トレース ログの記録対象となる重要度の最も低いイベント:詳細 (既定では「中」になっています。)

診断ログの設定

5) [OK] をクリックして変更を保存します。

by たらかわ@経験者は語る