2016-08-08 41 views
4

Wir versuchen, bis 1500 Datenbanken mit Mungo zu verbinden, aber es ist zu langsam 1500 Anschluss mit 1500 DB mit diesem Befehl auf demzu vielen Datenbanken auf einmal in Mongo/Mungo anschließen

mongoose.createConnection(url); 

die 1500 DB zu erstellen gleicher Datenbankserver. es dauerte mehr als 50 Minuten, um diese Verbindungen herzustellen.

Gibt es eine Möglichkeit, die Zeit zu verringern, oder gibt es eine Möglichkeit, die 1500 DB auf einmal zu verbinden, da sie sich auf demselben Server befinden?

+0

Warum brauchen Sie so viele dbs? Gibt es einen Grund, warum Sie Ihre Daten nicht in Sammlungen trennen können? Wenn Sie Ihre dbs sharding, müssen Sie auch keine Verbindung zu jedem Shard herstellen. Kurz vor einer Schleife kann ich mir keine Verbesserung vorstellen, ohne die Anzahl der dbs zu reduzieren. – DrakaSAN

+0

danke, aber es ist erforderlich, diese Anzahl von DBs zu haben. –

+0

Ich gebe zu, ich bin daran interessiert, was Use Case zu einer so enormen Anzahl von DB führen, und wie Sie alle diese Verbindungen aufrechterhalten können. Da 'createConnection' asynchron ist, sollten Sie' async' verwenden können, um die Verbindung zu beschleunigen, aber ich bin mir nicht sicher, ob es einen großen Einfluss haben wird. – DrakaSAN

Antwort

1

Sie könnten async versuchen:

'use strict'; 
const mongoose = require('mongoose'), 
    async = require('async'), 
    dbsUrl = [ 
    'mongodb://url1', 
    //... 
    'mongodb://url15000', 
]; 

async.map(dbsUrl, (url, callback) => { 
    let conn = mongoose.createConnection(); 
    conn.once('error', (err) => { 
     callback(err); 
    }); 
    conn.once('connected',() => { 
     callback(null, conn); 
    }); 
}, (err, dbs) => { 
    //If a error happenned, it will callback immediately 
    //Else, dbs will now be a array of connections 
}); 

ich allerdings für eine solche Anzahl von Verbindungs ​​über die Leistung nicht kennen.