[英]How does mysql connection pooling works with Node microservices?
我有兩個節點微服務與一個常見的mysql數據庫通信。 這兩個微服務都具有以下代碼來創建連接限制為10的連接池,如下所示:
//初始化池
var pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
port: '3306',
user: 'root',
password: 'root'
});
function addConnection(req, res) {
pool.getConnection(function (err, connection) {
if (err) {
connection.release();
res.json({ "code": 500, "status": "Error" });
return;
}
connection.query("select * from user", function (err, rows) {
connection.release();
if (!err) {
res.json(rows);
}
});
connection.on('error', function (err) {
res.json({ "code": 500, "status": "Error" });
return;
});
});
}
對於mysql數據庫,我將max_connections設置為200(類似於SHOW VARIABLES LIKE'max_connections';返回200)。
理想情況下不會; 但可以超過10; 如果某些連接失效,即它們從客戶端關閉,但在服務器端仍然打開。
如果您在多個VM或Docker容器中部署了同一微服務的多個實例; 它們就像獨立的服務。彼此之間沒有連接。因此,它們每個都將創建自己的10個連接。
首先,如果您將連接池限制設置為10; 這並不意味着在第一時間將創建10個連接。 您還要指定初始連接參數,假設為5 ..因此,服務啟動時將僅創建5個連接,並且僅在需要時才創建更多連接,且UPPER Limit由參數max_connections定義。 回到您的問題; 如果您尚未正確實現同步等,那么可以,兩個池都可能會初始化其INITIAL_CONNECTIONS。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.