Tengo una aplicación web Java ejecutándose en tomcat 8.5.x en la instancia AWS ubuntu ec2.
Estaba ejecutando esta aplicación en unm5.xgrandeinstancia que proporciona 4 vCPU y 16 GB de RAM. En este caso, el uso de CPU de mi aplicación fue de alrededor del 60% y el uso de RAM fue de alrededor de 5 GB.
Debido a que el uso de RAM es bastante menor, pensé en mover esta aplicación a una instancia optimizada para computación para ahorrar costos. Por lo tanto, lo moví ac5.xgrandeinstancia que proporciona 4 vCPU y 8 GB de RAM. En este caso, el uso de mi aplicación también fue el mismo, alrededor de 5 GB de RAM y 60 % de CPU. Funcionó bien durante casi 24 horas, después de lo cual, de repente, el uso de la CPU llegó al 100% y nunca bajó, lo que resultó en que la aplicación no respondiera.
Intenté usarm5.grandeinstancia que también proporciona 8 GB de RAM, el mismo problema ocurrió allí también, después de aproximadamente 24 horas 100% de CPU. Al final, lo moví de nuevo a la instancia m5.xlarge y hace más de 10 días que mi aplicación funciona bien. El uso también es el mismo.
Ahora no puedo depurar por qué este uso del 100% de la CPU ocurre en una instancia de 8 GB cuando mi uso de RAM nunca supera los 5 GB. No he ajustado Tomcat para el entorno de producción, estoy usando la configuración predeterminada. ¿Existe alguna causa probable que deba investigar?