Avem o aplicație Tomcat care rulează pe Elastic Beanstalk și baza noastră de date MySQL este găzduită pe AWS RDS (2 sau 3 instanțe t3.medium). De când am făcut upgrade de la MySQL 5 la MySQL 8 (în prezent 8.0.23), am avut o problemă care apare aproximativ o dată pe săptămână.De cele mai multe ori baza de date este în regulă, dar apoi, dintr-o dată, numărul de conexiuni crește vertiginos (uneori chiar depășind limita de 307 de conexiuni într-un interval de 1 minut, ceea ce este, de asemenea, ceva pe care nu îl obținem. Cum este este capabil să depășească această limită?) și asta face ca instanțele Elastic Beanstalk să devină degradate. Uneori, întreaga bază de date se blochează după acele conexiuni.
În timp ce monitorizez JVM-ul aplicației cu VisualVM, am ajuns să observ că, în timpul acelor vârfuri de conexiune, Tomcat creează brusc zeci de fire de lucru. Bănuiesc că fiecare dintre acele fire stabilește o nouă conexiune la baza de date. Deși am putea limita numărul acestor fire de execuție (în primul rând serverele nu ar fi capabile să gestioneze atât de multe fire de execuție), dorim să înțelegem ce cauzează acest lucru. De ce creează Tomcat atât de multe fire și conexiuni la baza noastră de date? Este aceasta o cauză sau o consecință a problemelor din baza de date? Unde ar trebui să căutăm pentru a găsi rădăcina problemei?
Am căutat mult pe Google, încercând să găsesc oameni care au avut probleme similare pentru a face lumină asupra problemei. De asemenea, am încercat să analizăm cele mai scumpe interogări și alte informații despre performanța bazei de date, dar se pare că nu există un model clar.