概要:
つい最近、MongoDBサーバーが利用できない場合にSitecore サイトがフリーズしてしてしまったことがあった。
その際に習ったことを共有したいです。
まず、下記のKB記事にてこれまでに出会った問題がすべてカバーしてきましたが、
MongoDBサーバーが利用できない場合のSitecore XPの動作
https://kb.sitecore.net/articles/930657
特に、この提供されているパッチが一番有効でした。
私が出会ったエラーはサイトがロードし続き何も更新されないもんだだった。
サイトコアのログをみるとと、タイムアウトとあり、てっきり MongoDBサーバーがダウンかと思いました。
MongoDBサーバーをみると特にエラーなどがなく、サービス自体も走っています。
次にサイトコアのサイトを走っているサーバーのIIS ログを見る限り、サイトがフリーズではなく、リクエストを通常に受け取り、
ただ、タイムアウトされているのでプロセスができていない状態です。
これだとやはり、MongoDBサーバーに問題があるのではと思い、最後MongoDBサーバーにていろいろとトラブルシューティングを試していました。その際にRoboMongoを使ってローカルのMongoDBサーバーへの接続ができなかった。
パブリックのサイトなのでこれ以上待つことができなかったので、MongoDBサーバーを再起動し、問題を解決しました。
さてなんでMongoDBサービスがはしっているので、リクエストをプロセスしないのか、また、なぜ、RoboMongoを
使って接続できないのかがを知りたかった。いろいろと検索したろころで、MongoDB のドキュメントにて
https://docs.mongodb.com/manual/core/index-creation/
デフォルトのせていにて、インデックスが実行されている間で、データベースへのすべての操作がブロックされるとありました。
さらに、MongoDBのログをみる、インデックスが実行されていたことが判明。。。
また、MongoDBが再起動する際にインデックスが環境されていないことも確認を取った。
発生原因を突き詰めたところで解決策としてどうすればいいかサイトコアサポートへ連絡しました。
勧められたのはMongoDB のドキュメントにあるバックグラウンドで実行する設定でした。
xDB Migration Toolにてインデックスをバックグラウンドで実行すれば、MongoDBサービスが通常に動作することを確認しました。