16 votes

Comment augmenter la limite de données en mémoire tampon ?

Dans Ubuntu, j'ai créé une collection de données MongoDB contenant 1 million d'enregistrements. Lorsque j'essaie d'exécuter une commande de tri sur cette collection, j'obtiens l'erreur suivante :

 "$err" : "Runner error: Overflow sort stage buffered data usage of 33555002 bytes exceeds internal limit of 33554432 bytes",
 "code" : 17144

Quelqu'un peut-il me décrire comment augmenter la limite interne afin que je puisse exécuter cette commande et d'autres commandes à grande échelle sur les données ?

23voto

Adam C Points 1929

Cela peut arriver à cause d'un bug comme SERVER-13611 (assurez-vous donc que vous êtes sur la dernière version), ou parce que vous essayez de tri sur un index clairsemé en 2.6 Mais le plus souvent, c'est parce que vous essayez simplement de trier trop d'enregistrements en mémoire sans index.

La limite spécifique que vous atteignez est intentionnelle et est documenté ici - il ne peut pas être modifié, vous devez donc réduire l'ensemble des résultats, ou utiliser un index, etc. pour effectuer le tri.

Mise à jour (novembre 2014) : La prochaine version 2.8 (2.8.0-rc0 au moment où nous écrivons ces lignes) permet désormais de modifier ce paramètre, comme suit :

db.adminCommand({setParameter: 1, internalQueryExecMaxBlockingSortBytes: <limit in bytes>})

La valeur par défaut est de 32MiB (33554432 octets) et doit être ajustée avec précaution - les grands tris en mémoire peuvent provoquer l'arrêt de votre base de données (c'est pourquoi il y avait une limite en premier lieu).

2voto

max kaplan Points 121

J'ai également rencontré ce problème lors du tri et de la mise en page de plus de 200 000 enregistrements. La solution la plus simple semble être d'ajouter un index ( pour les attributs sur lesquels vous effectuez le tri.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X