Eu tenho um aplicativo da web Java em execução no Tomcat 8.5.x na instância AWS ubuntu ec2.
Eu estava executando este aplicativo em umm5.xgrandeinstância que fornece 4 vCPU e 16 GB de RAM. Neste caso, o uso da CPU do meu aplicativo foi de cerca de 60% e o uso de RAM foi de cerca de 5 GB.
Como o uso de RAM é bem menor, pensei em mover este aplicativo para uma instância otimizada para computação para economizar custos. Por isso, mudei parac5.xgrandeinstância que fornece 4 vCPU e 8 GB de RAM. Nesta instância também o uso do meu aplicativo foi o mesmo em torno de 5 GB de RAM e 60% de CPU. Funcionou bem por quase 24 horas, após as quais, de repente, o uso da CPU atingiu 100% e nunca caiu, o que resultou em um aplicativo que não respondeu.
Eu tentei usarm5.grandetambém uma instância que fornece 8 GB de Ram, o mesmo problema aconteceu lá também, após cerca de 24 horas com 100% de CPU. Por fim, mudei-o de volta para a instância m5.xlarge e já faz mais de 10 dias que meu aplicativo está funcionando bem. O uso também é o mesmo.
Agora não consigo depurar por que esse uso de 100% da CPU está acontecendo em uma instância de 8 GB quando meu uso de RAM nunca ultrapassa 5 GB. Não ajustei o Tomcat para ambiente de produção, estou usando configurações padrão. Existe alguma causa provável onde eu deveria investigar?