2016-10-24 4 views
8

Ich habe mongodb Datenbank und node.js v12.0.10 für die Verbindung und Aktualisierung mongodb Sammlung verwendet. Verbindungscode ist wie folgt zusammen:mongodb Verbindung Zeitüberschreitung Fehler

async.parallel({ 
     RE5: function (cb) { 
      MongoClient.connect(config.riskEngineDB, function (err, r5DB) { 
       cb(err, r5DB); 
      }) 
     }, 
     MDB: function (cb) { 
      MongoClient.connect(config.monitoringDB, function (err, mDB) { 
       cb(err, mDB); 
      }) 
     } 
    }, 
    function (err, DBs) { 
     assert.equal(null, err); 
     console.log("Connected correctly to Dbs"); 
     // ..doing updates.. 

})

nach einiger Zeit läuft, Skript die folgende Fehlermeldung gedruckt:

{ [MongoError: connection 39 to 127.0.0.1:27017 timed out] 
    name: 'MongoError', 
    message: 'connection 39 to 127.0.0.1:27017 timed out' } 

Zu Ihrer Information habe ich verschiedene Möglichkeiten der Verbindungen von mongodb aber es ergab keinen Sinn.

Antwort

6

Ich hatte eine ähnliche Erfahrung, aufgrund einer Abfrage, die zu viel Zeit in Anspruch nahm

Sie haben 2 konfigurierbare Timeouts in Knoten Mongo Treiber zu antworten:

connectTimeoutMS und socketTimeoutMS, die beide in Verzug 30sec (http://mongodb.github.io/node-mongodb-native/2.2/reference/connecting/connection-settings/)

Wenn die Abfrage länger als 30 Sekunden dauert, um das erste Ergebnis zu senden, wird die Verbindung mit einem Zeitüberschreitungsfehler beendet.

Wenn Ihre Abfrage zwischen zwei Ergebnissen mehr als 30 Sekunden benötigt, wird sie wahrscheinlich aufgrund des Schrumpfens des Pools beendet.

Sie möchten möglicherweise Timeouts erhöhen oder sicherstellen, dass Ihre Abfrage schnell genug ist (z. B. einen Index erstellen). Ich rate dazu, die Abfrage zu beschleunigen, da bei längeren Timeouts die Leistung nachlassen kann.

+0

Ist es möglich, Informationen darüber zu erhalten, welche Abfragen zu lange dauern? In meinen Protokollen habe ich nur den Fehler, das Verbindungszeitlimit zu sagen, aber ich kann nicht herausfinden, welches es ist. Vielen Dank! – Thierry

+0

Ich behandle einfach die Fehler-Client-Seite und protokolliere die Abfrage hier. –

+0

Ohh okay! Vielen Dank! – Thierry

Verwandte Themen