2012-08-02 2 views
3

En raison du manque de mémoire mongod s'éteint automatiquement. (Debian)Erreurs MongoDB: impossible de se connecter au serveur ... ouvrir/créer a échoué dans createPrivateMap

~# reboot 
~# mongo 
MongoDB shell version: 2.0.6 
connecting to: test 
Thu Aug 2 13:12:26 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:8 4 
exception: connect failed 
~# mongo 127.0.0.1:27017 
MongoDB shell version: 2.0.6 
connecting to: 127.0.0.1:27017/test 
> use database 
> db.repairDatabase() 
{ 
     "errmsg" : "exception: file /var/lib/mongodb/$tmp_repairDatabase_0/datab  ase.1 open/create failed in createPrivateMap (look in log for more information)"       , 
     "code" : 13636, 
     "ok" : 0 
} 
  1. Erreur: Impossible de se connecter au serveur ... L'erreur dans la configuration, vous ne savez pas pourquoi?
  2. /var/lib/mongodb/$ tmp_repairDatabase_0 et/var/lib/mongodb/_tmp un dossier temporaire? Puis-je les supprimer?

La base de données fonctionne très bien, mais j'ai peur de ce qui se passera la même chose que ma base il y a une semaine. J'ai dû réinstaller complètement mongodb. link

UPD:

Juste a augmenté la taille de la RAM sur le serveur et exécuté jusqu'à 3Gb db.repairDatabase() - tout allait bien.

Le problème était un manque de mémoire. (Fichiers mappés en mémoire) Pas de début de bande - 136 Ko de mémoire occupée. Après le démarrage de mongod - la mémoire de 1100Kb est occupée. Dans ma base de données objets 1165916. Plus l'objet est grand, plus la mémoire est occupée. Comment puis-je réduire la consommation de la mémoire mongodb? Ou la seule issue - plus de mémoire?

+0

Pouvez-vous signaler ce que l'erreur était du journal de mongod quand vous frappez ceci dans le shell? Pouvez-vous également publier la sortie de 'ls -al' dans le dossier/var/lib/mongodb? –

+0

pouvez-vous également reconfirmer le paramètre de/proc/sys/vm/overcommit_memory?Il devrait être 0 –

Répondre

2

Je pense que cela et votre précédent numéro ont la même cause - le manque de ressources. Vous avez indiqué dans votre précédent message que vous n'aviez que ~ 1,4 Go de mémoire et dans ce cas la réparation a réussi lorsque vous avez plus de mémoire allouée. Une réparation doit traverser et réécrire l'ensemble des données, de sorte que cela va être intensif.

Il y a une description détaillée de la façon dont MongoDB utilise la mémoire ici:

http://www.mongodb.org/display/DOCS/Checking+Server+Memory+Usage

Ne pas oublier, votre jeu de travail dans la RAM comprend des index ainsi que les données, il est donc pas seulement une question de le nombre d'objets. Si votre jeu de données de travail doit normalement se situer dans la plage de 1,4 Go, vous n'avez probablement pas besoin de RAM supplémentaire, mais vous devrez configurer un swap lorsque celui-ci dépassera ces limites. éviter le tueur OOM et d'autres questions - voir here et here pour plus d'informations). Sans augmenter la RAM, soyez prêt à avoir un tel usage être très lent aussi. Dans le numéro précédent, vous n'aviez pas de swap configuré - cela ne donne rien au système d'exploitation si vous faites quelque chose qui consomme toute la mémoire disponible, comme une réparation. En ce qui concerne l'échec de la connexion initiale, je crois qu'il peut essayer de se connecter sur localhost: 27017 par défaut (plutôt que l'IP) si aucun argument n'est spécifié - est-il possible que votre fichier /etc/hosts renvoie l'adresse IPV6 ou quelque chose similaire. Échouez-vous si vous essayez de vous connecter à localhost manuellement?

+0

/proc/sys/vm/overcommit_memory - 0 Comment puis-je réduire la consommation de la mémoire mongodb? Ou la seule issue - plus de mémoire? –

+0

Merci beaucoup pour vos réponses! –

+0

Avait aussi problème avec la pénurie de mémoire, redémarrer mongo n'a pas aidé. Cependant, j'ai arrêté d'autres services consommant beaucoup de mémoire (elasticsearch), puis redémarré mongo - et cela a bien fonctionné. Puis a commencé elasticsearch et tout fonctionne bien. –

Questions connexes