2012-08-23 6 views
2

J'essaye d'insérer un tableau 2d 2000 x 2000 dans mon instance mongoDB via mon serveur node.js.L'insert mongoDB 2d-array procédural sur node.js manque de mémoire

En ce moment, la façon dont je le fais est:

for (i=0; i<2000; i++){ 
      //i = height of the tile map 
      for(x=0; x<2000; x++){ 
       //x is the width of the tile map 
       driver.mongo.insert('worldTiles', {loc: [x,i], elevation: obj.server.theArray[i][x]}, function (err,results){ 
        if(!err){ 

        }else{ 
         console.log('Ran into an error inserting into worldTiles on Mongo'); 
        } 
       }) 
      } 
      console.log(i); 
     } 

Maintenant, le problème que je suis confronté est que vers la ligne 576 mes Node.js exemple ralentit considérablement (une ligne traitée par 40 secondes ou alors) et manque de mémoire. Je ne comprends pas comment/pourquoi cela se passe.

Est-ce que j'aborde ce problème correctement? Des idées sur la façon dont je peux obtenir ce tableau 2d dans ma base de données sans patauger?

Merci pour votre aide à tous.

+0

Quel pilote mongodb est-ce? Je ne suis pas familier avec la syntaxe 'driver.mongo.insert'. – JohnnyHK

+0

C'est un pilote privé qui est assez basique, juste envelopper le nativeParser. Je pourrais essayer avec un autre pilote ... tout ce que vous recommandez? – Mavorus

+0

Le 10gen standard pris en charge un pour JavaScript: https://github.com/mongodb/node-mongodb-native – JohnnyHK

Répondre

1

Il semblerait que le problème concerne le fournisseur de mon instance mongoDB. Je viens de découvrir que lors de la mise en file d'attente d'une instance mongo sur jitsu, il y a une limite de ~ 64 Mo sur la taille de l'utilisation de la mémoire. Ainsi, exactement à ce moment-là, j'ai eu l'erreur "out of memory".

ils souhaitent en quelque sorte que le message d'erreur un peu plus descriptif, y compris ce dispositif a été à court de mémoire ... rouleaux yeux.

Cas fermé.