Я получаю сообщение об ошибке Too many connections
, когда много циклов с INSERT IGNORE INTO.
function insertCases(cases) {
for(var i in cases) {
var thequery = 'INSERT IGNORE INTO `cases` SET keysused='+cases.keysused+'
pool.query(thequery, function(ee, rr) {
if(ee) {
logger.info(ee);
throw ee;
}
});
}
}
Когда сейчас 100+ случаев, так 100 раз ВСТАВЬТЕ IGNORE INTO, чем я получаю слишком много соединений. Я не знаю, сколько именно разбить его, но с 100 он работает.
Что я прочитал, так это то, что запрос выполняет запрос, а также закрывает соединение после выполнения, поэтому я читаю, мне не нужно закрывать его после.
Если я запускаю 100, жду короткое время и снова запускаю 100 и т. Д., Это не приводит к слишком большой ошибке соединения.
Это только тогда, когда проходит столько времени одновременно.
Вот мои настройки БД
var db_config = {
connectionLimit : 5000,
host: 'localhost',
user: 'userexample'
password: '*******',
database: 'example.com'
};
и это функция createPool.
function database_connection() {
pool = mysql.createPool(db_config);
pool.getConnection(function(err, connection) {
if(err) {
logger.error('[ERROR] Connecting to database "' + err.toString() + '"');
setTimeout(function() { database_connection(); }, 2500);
}
else
{
pool.query('SET NAMES utf8');
pool.query('SET CHARACTER SET utf8');
logger.trace('[INFO] Connected to database and set utf8!');
}
});
}
Все запросы на узле просто запускаются с pool.query
database_connection()
вызывается при старте узла