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