Olá Pessoal, tenho uma api que consulta no mysql os dados. Atualmente eu abro uma instância de conexão, executo a query e fecho ela depois. Porém, tendo muitos acessos aparece problema de 'too many connections'.
Agora então, eu crio o objeto de conexão do mysql e importo ele nas rotas com o require e nunca fecho a conexão após a query, ou seja, estou trabalhando sempre na mesma thread de conexão.
Isso tem algum impacto de alocação de memória ou algum problema ?
db.js
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'db_banco',
port: 8889
});
connection.connect(function(err) {
if (err) throw err;
});
module.exports = connection;
Arquivo da rota: /teste
var conexao = require('../infra/db.js');
module.exports = (app) => {
app.get('/teste', (req,res) => {
var consultaDao = new app.infra.consultaDao(conexao);
consultaDao.teste((erro,data) => {
if(erro)
{
console.log(erro);
}
res.json(data);
})
})
}
Ao executar o comando no mysql " show status where variable_name
= 'Threads_connected' " o retorno vem sempre 1 thread conectada. Eu gostaria de trabalhar assim, dessa forma com apenas 1 conexão e nunca fechar ela, mas gostaria de saber se é a maneira correta e se isso pode prejudicar a longo prazo com grande acesso de usuários em minha aplicação.