Temos uma instância MySQL que na maioria das vezes funciona bem. De tempos em tempos, porém, observamos um comportamento estranho. O que acontece é que, de repente, as conexões do MySQL atingem o limite (atualmente definido como 1000) e o MySQL praticamente para. O seguinte é observado quando verificamos os gráficos para este servidor:
A imagem é de uma instância do Grafana que executa um exportador MySQL. O que me incomoda é porque os threads do cache não são reutilizados. A outra questão é por que os threads no cache de repente caem para zero, mas ao mesmo tempo nenhum novo thread é criado (de acordo com o segundo gráfico - a linha azul permanece em 0).
Por fim, meu objetivo é entender por que 1000 conexões são usadas de repente e se isso é um problema com o MySQL ou o aplicativo. Isto é o que os documentos do MySQL dizem em relação aos threads:
Quantos threads o servidor deve armazenar em cache para reutilização. Quando um cliente se desconecta, os encadeamentos do cliente são colocados no cache se houver menos de encadeamentos thread_cache_size lá. As solicitações de encadeamentos são atendidas reutilizando encadeamentos retirados do cache, se possível, e somente quando o cache está vazio é criado um novo encadeamento.
Qualquer ajuda ou orientação será muito apreciada!