Indexerを複数動作させているServerでServer起動時にIndexerが停止する障害 | Lotus Notes/Domino (R) をこよなく愛して。。。。
November 10, 2021

Indexerを複数動作させているServerでServer起動時にIndexerが停止する障害

テーマ:Trouble Info

Notes.iniにupdaters=を指定してIndexer(Update Task)を複数起動している環境で、Serverの定期RebootなどでDomino Serverを起動すると、起動直後に稀にIndexerが停止してしまうと言う障害が発生します。

 

Inline Indexerが実装されたV9.0.1 FP9からの現象だと思われますが、Inline Indexerを利用しないようにnotes.iniパラメータでInline Indexerを停止(Update_Disable_Inline_Thread=1)した状態でも発生します。

 

Server起動後直ぐに、Indexerが停止し、二度と稼働することは無いため、Backupの為などの理由で夜間にDomino Serverを再起動しているような運用の場合、運用員が停止に気が付くまで、Indexerは停止状態になり、新着メールや新規に投稿されたDBの文書などがViewに表示されないと言う現象になります。

 

原因は、複数のIndexerを起動している環境で、Domino Server起動時に、稀に複数のIndexerが同時に起動しようとして、お互いに干渉してしまい、異常終了することが原因のようで、この現象はDomino起動時に必ず発生する障害ではありません。

 

この障害は、V12.0.1にて修正される予定とのことです。

 

といっても、まだ出荷もされていませんので、直ぐにV12.0.1にUpgrade出来る訳もありませんし、V9.0.1 FP9/FP10やV11.0.1で利用されている場合もありますので、何らかの回避策が必要となります。

 

簡単な回避策は、Updaters=nのnotes.iniパラメータを削除して、Update Taskの稼働を1個に戻すことですが、View更新が多く、View Indexの更新が遅れ気味になる環境ではIndexerの数をDefaultの1個に戻すことも出来ないかも知れません。

※ちなみに、システム管理サーバはUpdaters=nの設定を行っても、Indexerは1個しか動作しないのが仕様とのことですので、システム管理サーバで複数のIndexerをnotes.iniの指定で稼働させることは出来ません。つまり、Indexerを複数必要とするServerをシステム管理サーバに指定してはいけないということです。

 

まず、Domino Server起動直後にIndexerが停止したことを検知することが必要ですが、Indexerが停止した際にconsole.logに記録されるMessageは通常のIndexが完了した際にも記録され、その区別をすることが出来ません。

つまり、このMessageを検知したとしても、適切に起動直後にIndexerが停止したことを捕捉できる訳ではないのです。

 

Inline Indexerを利用していない環境(Update_Disable_Inline_Thread=1)の場合、Inline Indexerの停止Message(Inline indexing thread interupted)は一切出力されませんので、Inline Indexerを利用していなくても、Update_Disable_Inline_Threadパラメータを削除し、Inline Indexerが稼働した状態にします。

これで、Server停止時にInline Indexerの停止Message(Inline indexing thread interupted)が記録されることが確認出来ます。

Inline IndexerをどのDBでも利用していなければ、このMessageは、Indexerが停止する前に必ず出現するのです。

勿論、Server起動直後にIndexerが異常終了した場合もこのMessageが記録されるため、Indexerが停止したことを検知できるのです。

 

ここまでくると、対処方法は簡単で、Event Handlerを作成し、Inline Indexerの停止Message(Inline indexing thread interupted)を捕捉して、load updateコマンドを投げることで、稼働していたIndexerと同数のIndexerが起動されるという訳です。

Server停止時にも捕捉されて実行されるのでは?と思われるかも知れませんが、Server Shutdown時はEvent HandlerでのMessage捕捉は行われないようです。

 

このEvent Handlerで1年近く運用した経験上、特に問題なく、Indexer停止を捕捉して、再度IndexerをLoadしていることが確認出来ています。

皆さんの環境でもこのような障害が発生した場合、回避策として検討ください。

 

 

 

AD

コメント

[コメントする]