2017-11-26 3 views
0

Ich denke, dass meine Verbindungen nicht ordnungsgemäß freigegeben werden. Manchmal bekomme ich eine Fehlermeldung, dass mein Pool das Limit erreicht hat. Manchmal dauert der Zugriff auf die Datenbank nach dem Zufallsprinzip 15 Sekunden. Jedes Mal, wenn ich überprüfen, wie viele Verbindungen verwendet werden mit pool._allConnections.length, es nie etwas über 60 zurück Hier ist mein Code:Node.js MySQL-Verbindung nicht richtig freigegeben

const mysql = require('mysql'); 
const config = require('./config.json'); 

const pool = mysql.createPool({ 
    connectionLimit : 999, 
    host: config.host, 
    user: config.user, 
    password: config.password, 
    database: config.database 
}); 

const db = (() => { 

    _query = (query, params, callback) => { 
    pool.getConnection((err, connection) => { 

     if (err) { 
     callback(null, err); 
     } else { 
     connection.query(query, params, (err, rows) => { 
      connection.release(); 
      if (!err) { 
      callback(rows); 
      } else { 
      callback(null, err); 
      } 
     }); 
     } 

    }); 
    }; 

    return { 
    query: _query 
    }; 
})(); 

module.exports = db; 

Antwort

0

Ich habe konfrontiert gleiche Problem und https://github.com/mysqljs/mysql/issues/1518 mir helfen. Notice line

Ja, das war das Problem. Ich rief mysql.createPool auf jeder Abfrage an.

Eigentlich importieren Sie db von query.js (sagen wir Ihre Postleitzahl), um eine Abfrage auszulösen. Jedes Mal, wenn Sie eine Abfrage auslösen, erstellen Sie einen neuen Pool. Um dieses Problem zu lösen, können Sie createPool Codeblock auf app.js setzen und global freigeben oder in query.js über einen beliebigen anderen Codestil verwenden. offizielle doc https://github.com/mysqljs/mysql#pooling-connections Fund Linie

Da die pool.query Methode ist eine kurze Hand für die pool.getConnection Bezug -> connection.query -> connection.release() fließt, ruft pool.end() bevor alle Abfragen über pool.query abgeschlossen hinzugefügt haben,

später benutzte ich diese Kopfschmerzen Freisetzungs Verbindung zu stoppen

Verwandte Themen