Como funcionam as conexões Node.js - Mysql

O que costuma acontecer é a conexão com o banco ser encerrada devido a timeout. E como não existe algum tipo de exception para esse erro de conexão com o banco, o container da aplicação é derrubado gerando o erro 503.

Diferente do MongoDB, em nossos planos de MySQL existem tempos de timeout predefinidos para conexões que ficam inutilizadas.

"Certo, mas localmente funciona!" - Provavelmente em seu ambiente local o servidor MySQL não tem nenhuma configuração de timeout. Isso é comum nos Wamp’s, XAMPP’S e outros servers locais.

Geralmente o pessoal que usa Node.JS abre uma conexão com o banco quando conecta no sistema (em uma tela de login do app, por exemplo), e fica com essa mesma conexão aberta para fazer outras consultas dentro do painel admin. Após alguns minutos essa conexão é encerrada pelo nosso MySQL devido ao timeout que está configurado no servidor.

O ideal seria abrir a conexão para logar no admin, e encerrar essa conexão assim que conectado. Dentro do admin, quando necessário fazer uma consulta, aí sim realizar uma nova conexão, que também deve ser encerrada assim que usada.