My node.js app gives 5xx due to connection timeouts at random times. Here's how I connect and query: var mysql = require('mysql'); var config = { host: '172.10.1.1', port: 3306, user: 'user', password: 'pwd', database: 'mydb', connectionLimit: 15, queueLimit: 30 } var poolCluster = mysql.createPool(config); var queryDB = function(query, cb) { poolCluster.getConnection(function(err, connection) { if(err) { cb(err, null); } else { connection.query(query, function (err, rows) { connection.release(); cb(err, rows); }); } }); };
Also, in another alternate version, with connection pooling disabled, the code looks like this: queryDB = function(query, cb) { var connection = mysql.createConnection(config); connection.query(query, function(err, rows) { connection.end(); cb(err, rows); }); };
But both the setups give Error: connect ETIMEDOUT at Connection._handleConnectTimeout
It would be great if you could point out what could be going wrong with the connections. Thanks.
UPDATE
Since the node.js service was running in cluster mode, I thought maybe a race condition across the threads to acquire mysql connection resource from the shared connection pool is the reason. So I switched off the cluster mode to single thread mode and connection timeouts stopped.
Still I'm not convinced it was the race condition causing this issue. Any way to verify this?