こんにちは。
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 たらかわ@経験者は語る