十数万件以上の文書を登録した環境で、OSの再起動やFileBlogバージョンアップ時に検索ができなくなるという症例が過去に報告されておりましたが、原因が判明し、FileBlog Ver.2.1にて予防方法が確立いたしました。ご面倒ですが下記をご覧の上、必要な措置を講じて下さい。文書件数が数万件未満の環境では発生確率が低く、インデックスが万一破損しても小一時間でゼロから再構築が完了しますので、さほど問題にならないと思いますが、全文検索機能が一時的にでも利用不能となる恐れがありますので、ぜひ対処をお願いします。

症状

FileBlogに登録された文書数が増えると、検索エンジンの起動・終了に時間がかかるようになります。この状況でWindows OSのシャットダウン・再起動や、FileBlogサービスの再起動、FileBlogのバージョンアップインストールを行うと、下記の症状が出ることがあります。

  • FileBlogを起動して、全文検索をしようとすると「全文検索サービスが起動していません」というメッセージが出て検索できない。
  • 「コンピュータの管理」「サービス」で稼動状況を確認すると、FileBlogの全文検索エンジン「TpIdxEst」が起動していない。(※エンタープライズ版の場合、全文検索サービスは「TpIdxEst」に加えて「TpIdxEst2」など複数インスタンスがサービス登録されますが、そのうちの1つ以上が起動していない場合も同様です。

原因

データ量が増えると検索エンジンの終了に時間がかかるようになりますが、Windows OSのシャットダウン時に、Windowsは検索エンジンサービスに停止要求を投げてから20秒だけ待ち、20秒経過後は有無をいわせずに検索エンジンプロセスを強制終了していました(FileBlog Ver.2.0以前のバージョン)。

上記ケースのような強制終了が発生すると、検索エンジン(「HyperEstraier」)のインデックス・データが破損してしまい、次回起動時にHyperEstraierがデータ破損を検出して起動に失敗し、全文検索が不可能になってしまいます。

同様のインデックス破損は、「コンピュータの管理」「サービス」画面からTpIdxSvrサービスの再起動を行う際や、サービス稼動中にFileBlogインストーラを実行した場合にも起こる可能性があります。

復旧方法

この現象が発生した場合、検索インデックスを初期化して再構築することで復旧できます。

  • まず、TpIdxSvrサービスを停止してください。TpIdxEst(エンタープライズ版の場合TpIdxEst2など全て)が停止した状態を確認します
  • 検索インデックスを削除してから、TpIdxSvrを起動してください。

回避方法

まず、FileBlogをバージョン2.1以降にバージョンアップして下さい。なお、バージョンアップのためにFileBlogインストーラを実行するにあたり、予め「コンピュータの管理」「サービス」画面から、TpIdxSvrサービスを停止し、サービスが完全に停止したのを確認して数分ほど待ってからインストーラを実行すると安全です。

FileBlog Ver.2.1以降では、TpIdxSvrの停止時に、検索エンジンサービスの停止を最後まで待つように変更が加えらております。

さらに、OS終了時に実行されるシャットダウンスクリプトを登録してください。OSのシャットダウン手続きの先頭で実行されるスクリプトで、TpIdxSvrサービスの停止を行いますので、確実に検索エンジンを終了させてから、シャットダウンが行われます。これによりWindowsのシャットダウンや再起動の所要時間が長くなることがありますが、意図したとおりの動作であり正常です。詳細は次のセクションをお読み下さい

以上により問題の発生を予防することが可能です。

シャットダウンスクリプトの登録方法

シャットダウンスクリプトとは?

Windowsの終了(シャットダウン)時に、OSの終了よりも前に、何かしらの処理(サーバ上のアプリケーションの停止、ごみデータの削除など)をさせるためのスクリプトのこと。(出典:はてなキーワード

シャットダウンスクリプトの登録方法

FileBlogサービスをインストールしたサーバマシン(Windows 2003 Server/XP Pro/2008)の場合、
シャットダウンスクリプト登録方法(FileBlogヘルプ)にしたがって登録を行ってください。

ドメイン環境でシャットダウンスクリプトの登録が上手くいかない

サーバがドメインに参加していない場合は、上記の通りグループポリシーエディタで定義したシャットダウンスクリプトはすぐに有効になりますが、ドメインに参加している場合には、グループポリシーの変更が反映されるまでに時間差が発生したり、なかなか反映されなかったりすることがあります。

ドメイン環境では、全コンピュータ共通のシャットダウンスクリプトをドメインコントローラから一括配布するなどが可能となっているため、個別のコンピュータで定義したシャットダウンスクリプトはドメインで定義されたスクリプトと実行順がマージされる必要があるからです。

反映をすぐに行う方法

「gpupdate」コマンドを実行することで、グループポリシーの反映を即時に要求することができます。通常は、このコマンドを実行することで、反映できるはずです。

ただし、ネットワークの状態や設定によって、グループポリシーの反映に失敗してしまうことがあります。”gpupdate”コマンドは失敗してもエラーメッセージを表示しませんので、必ず「コンピュータの管理」「イベントログ」で「システム」のイベントログを確認してください。失敗している場合にはエラーイベントが記録されています。

失敗するケースにはいろいろありますが、ネットワークケーブルが抜けている場合や回線品質が低い場合のほか、ドメインコントローラのDNSをうまく参照できない場合にも失敗します。

反映結果を確認する方法

「gpresult /SCOPE COMPUTER /V」で、シャットダウンスクリプトの登録を確認できます。