Help us understand the problem. What is going on with this article?

MongoDBでデータベースの容量が大きすぎてメモリに乗らない場合の対処方法

More than 1 year has passed since last update.

はじめに

MongoDBで特定の環境のみで大量のエラーを吐いて落ちる現象を確認しました.エラーを確認したところ,MongoDBのデータベース容量が過剰でメモリに乗りきらない可能性があると考えました.特に,WiredTriggerがメモリ・アロケーションに失敗しているようなエラーを吐いていました.

ここでは,データベースがメモリに乗りきらないので修復することを目的に話を進めます.ほかの理由でMongoDBが落ちる場合は,ほかの対処方法を探してください.

MongoDBのデータベースの修復

MongoDBのmongodコマンドでは,データベースを現在の環境に合わせて修復するコマンドが用意されています.

mongod --repair --dbpath="C:\db"でデータベースの修復処理を走らせることができます.あくまでデータベースの修復だけで,サーバの立ち上げは行いません.

再度,mongod --dbpath="C:\db"でデータベースを開いてください.

MongoDBのrepairオプション

repairオプションでは,MongoDBのデータベースファイルの修復を自動的に行います.

例えば,データベースを作成した環境のメモリが32GBで,運用環境で4GBしかメモリがないとき,データベースがメモリに乗りきらずに落ちることがあります.ほかにも,過去に強制的にMongoDBをシャットダウンしたら.lockファイルが残ってて起動しなくなる,などのトラブルも自動的に解決します.

MongoDBが立ち上がらないときは,焦らずにrepairオプションを使ってデータベースを修復してみましょう.

GRGSIBERIA
なんでもやる人.元未踏クリエータ.三次元幾何学と音響工学を少々.
http://www.grgsiberia.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした