Zunächst weiß ich, dass es mehrere ähnliche Fragen gibt, aber sie beantworten nicht, was ich brauche, also lass mich diese neue öffnen :)nodejs + mysql: wann gepoolte Verbindungen zu verwenden?
Zweitens ist diese Frage auf mysql konzentriert, aber nicht beschränkt auf es gilt auch für andere poolfähige Dienste wie memcached.
Soweit ich weiß, führt nodejs die Scripts single-threaded aus, aber es kann Threads erstellen, so dass es gleichzeitige Benutzer in einem Server verwalten kann. Aus diesem Grund ist es sinnvoll, einen Pool von Verbindungen zu erstellen.
Das Problem kommt, wenn ich diesen Test api per Express gedient haben, und ich führen Sie den folgenden Benchmark-Code:
ab -t 30 -c 1000 localhost/test
mir die folgende Ausgabe für Single-Direkt Verbindung zur Datenbank zu geben:
Requests per second: 1732.07 [#/sec] (mean)
Time per request: 577.344 [ms] (mean)
in einem mySQL-Pool mit nur 1 Verbindung:
Requests per second: 1346.24 [#/sec] (mean)
Time per request: 742.811 [ms] (mean)
Und mit einem Pool mit 100 Verbindungen:
Requests per second: 662.82 [#/sec] (mean)
Time per request: 1508.716 [ms] (mean)
Welche sollte das Gegenteil sein, oder? Poolverbindung mit besserer Leistung.
Ich weiß, dass das Pooling-Management seine Zeit erfordert (soll aber nicht signifikant) und die SQL-Abfrage ist sehr einfach, aber ... IDK ...
Die API so etwas wie diese:
function test(response, request, dbc) {
dbc.query(SQL, PARAMS, (err, rows) => {
dbc.release();
if(err) {
log.error('Error while performing the query', err.code);
return;
}
response.send(response, rows);
});
}
wo dbc
die Datenbankverbindung für einzelne/gepoolten Verbindungen abstrahiert ist, und dbc.release()
tun nichts, wenn die Verbindung nicht aus einem Pool ist (der gleiche api Arbeit auf direkte/Pool-Verbindungen mit dem gleichen Code zu ermöglichen, nur eine Option zu ändern).
Fehle ich hier etwas?
, das ist, was ich sage über die Abfrage sehr einfach zu sein, vielleicht das ist das Problem ... aber der Unterschied in der Leistung (3x) ist zu groß sowieso. Es ist seltsam ... – danikaze