[Sitecore][MongoDB] MongoDBサーバーが利用できない場合のSitecore サイトがフリーズしてしまう。

概要:

つい最近、MongoDBサーバーが利用できない場合にSitecore サイトがフリーズしてしてしまったことがあった。

その際に習ったことを共有したいです。

まず、下記のKB記事にてこれまでに出会った問題がすべてカバーしてきましたが、

MongoDBサーバーが利用できない場合のSitecore XPの動作

https://kb.sitecore.net/articles/930657

特に、この提供されているパッチが一番有効でした。

2019-07-12_01

私が出会ったエラーはサイトがロードし続き何も更新されないもんだだった。

サイトコアのログをみるとと、タイムアウトとあり、てっきり MongoDBサーバーがダウンかと思いました。

2019-07-12_02png

MongoDBサーバーをみると特にエラーなどがなく、サービス自体も走っています。

2019-07-12_03

次にサイトコアのサイトを走っているサーバーのIIS ログを見る限り、サイトがフリーズではなく、リクエストを通常に受け取り、

ただ、タイムアウトされているのでプロセスができていない状態です。

これだとやはり、MongoDBサーバーに問題があるのではと思い、最後MongoDBサーバーにていろいろとトラブルシューティングを試していました。その際にRoboMongoを使ってローカルのMongoDBサーバーへの接続ができなかった。

パブリックのサイトなのでこれ以上待つことができなかったので、MongoDBサーバーを再起動し、問題を解決しました。

さてなんでMongoDBサービスがはしっているので、リクエストをプロセスしないのか、また、なぜ、RoboMongo

使って接続できないのかがを知りたかった。いろいろと検索したろころで、MongoDB のドキュメントにて

https://docs.mongodb.com/manual/core/index-creation/

2019-07-12_04

デフォルトのせていにて、インデックスが実行されている間で、データベースへのすべての操作がブロックされるとありました。

さらに、MongoDBのログをみる、インデックスが実行されていたことが判明。。。

2019-07-12_05

また、MongoDBが再起動する際にインデックスが環境されていないことも確認を取った。

2019-07-12_05 2019-07-12_06

発生原因を突き詰めたところで解決策としてどうすればいいかサイトコアサポートへ連絡しました。

勧められたのはMongoDB のドキュメントにあるバックグラウンドで実行する設定でした。

2019-07-12_07

 xDB Migration Toolにてインデックスをバックグラウンドで実行すれば、MongoDBサービスが通常に動作することを確認しました。

2019-07-12_08