überschritten hat, die 'max_user_connections' resource
Ich habe eine MySQL -, Express -, Winkel -, NodeJS-Anwendung und manchmal wenn ich mich einlogge bekomme ich folgende Fehlermeldung in meinem node-Konsole:
TypeError: Cannot read property 'query' undefined
Tritt der Fehler in meinem passport.local.js
Datei, dies ist die Zeile:
connection.query('SELECT * FROM users WHERE username LIKE ?', [username], function (err, user) {
Dies ist die passport-Funktion
passport.use(new LocalStrategy(
function(username, password, done) {
console.log('app.js');
pool.getConnection(function(err, connection) {
console.log('err: ' + err);
console.log(connection);
connection.query('SELECT * FROM users WHERE username LIKE ?', [username], function (err, user) {
if (err) throw err;
for (var i = user.length - 1; i >= 0; i--) {
var current = user[i];
}
if(current){
if(bcrypt.compareSync(password, current.password)){
return done(null, user);
} else {
return done(null, false);
}
} else {
console.log('no user');
return done(null, false);
}
});
connection.release();
});
}
));
Ich verlange, dass meine pool
in der Spitze meiner Datei
var pool = require('../../config/connection');
Wenn der Fehler Auftritt die:
console.log(connection);
Bekommt:
undefined
Ich auch den Fehler protokollieren:
console.log('err: ' + err);
Zeigt:
err: Error: ER_USER_LIMIT_REACHED: User 'bfe4a8980ede74' has exceeded the 'max_user_connections' resource (current value: 10)
Vielleicht sind Sie laichen zu viele Prozesse. Stellen Sie sicher, dass Sie in der Nähe jeder Verbindung, die Sie machen, nachdem Sie fertig sind mit ihm.
InformationsquelleAutor Peter Boomsma | 2016-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Fehler, die Sie bekommen, die besagt, das Problem: dein MySQL-server ist nur erlaubt 10 Verbindung pro user, und das limit wurde erreicht.
Den Standardeinstellung für die
mysql
connection pool auch passiert, 10, die schneiden es wirklich in der Nähe. Wenn alle anderen MySQL-client-abgesehen von der Express-app wird die Verbindung zur Datenbank mit den Benutzerdaten, die Sie ausführen kann, in diesem bestimmten Fehler. Ich würde vorschlagen, Erhöhung dermax_user_connections
in der MySQL-Konfiguration.Abgesehen davon, dass, es gibt ein anderes Problem mit deinem code: es ist die Freigabe der Verbindung, bevor die Abfrage fertig ist, die führen kann zu einem unerwarteten Verhalten. Bewegen Sie den Aufruf
connection.release()
innerhalb der callback:Wenn das eine übliche Weise ist, bist du mit MySQL (Verbindung hergestellt werden kann, führen Sie eine Abfrage, lassen Sie die Verbindung), können Sie machen das Leben ein bisschen einfacher, indem Sie
pool.query()
statt. Sehen dieses Beispiel.Und schließlich, wenn Sie arbeiten mit asynchronen code, werfen Sie nicht die Fehler, sondern geben Sie Sie in den callback (und stellen Sie sicher, dass Sie tatsächlich mit Ihnen umgehen, weil Sie nicht die Behandlung von Fehlern aus
pool.getConnection
nun, neben dem protokollieren):Ich glaube nicht, du bist überflutung der Datenbank mit den verbindungen, es ist nur so, dass die maximal zulässige Anzahl der Anschluss ist genau das gleiche wie die Anzahl der verbindungen der pool (träge) öffnen. Wenn
mysql
passiert, öffnen eine zusätzliche Verbindung (aus welchem Grund auch immer), dass man über dieser Grenze. Die Erhöhung ist auf, sagen wir, 20, sollte wohl genug sein. Und es sei denn, Sie haben Wild untermotorisiert hardware, ich glaube nicht, dass es einen negativen Einfluss.Ich habe meine MySQL-Datenbank auf Heroku. Ich glaube ich muss zum konfigurieren der DB auf dieser Plattform. Ich habe gerade den Wert meiner eigenen config, aber ich bekomme immer noch den Fehler.
alternativ könnten Sie versuchen, und senken Sie die
connectionLimit
Wert des connection-pool.InformationsquelleAutor robertklep
Nehme ich an, dass Ihr
max_user_connections
ist auf 10 gesetzt. Bitte erhöhen Sie diemax_user_connection
Wert.Wird Ihnen helfen, geben die keine der verbindungen, die Sie eingestellt haben. Erhöhen Sie die Anzahl der verbindungen, Wenn Ihr weniger als 25 oder 50. Max verbindungen können mehr als 16000 ich denke, es hängt alles von Ihrer cpu, keine threads verarbeiten kann, etc.
max_user_connections
ist eine dynamische variable, was bedeutet, können Sie direkt ausführen dieser Abfrage. Sie donot haben zum Herunterfahren von mysql.InformationsquelleAutor JumpMan