เรามีแอปพลิเคชัน Tomcat ที่ทำงานบน Elastic Beanstalk และฐานข้อมูล MySQL ของเราโฮสต์อยู่บน AWS RDS (2 หรือ 3 อินสแตนซ์ t3.medium) นับตั้งแต่เราอัปเกรดจาก MySQL 5 เป็น MySQL 8 (ปัจจุบันคือ 8.0.23) เราประสบปัญหาที่เกิดขึ้นประมาณสัปดาห์ละครั้งส่วนใหญ่แล้วฐานข้อมูลปกติดี แต่จู่ๆ จำนวนการเชื่อมต่อก็พุ่งสูงขึ้นอย่างรวดเร็ว (บางครั้งอาจเกินขีดจำกัดการเชื่อมต่อ 307 รายการในช่วง 1 นาที ซึ่งเป็นสิ่งที่เราไม่เข้าใจเช่นกัน เป็นอย่างไร สามารถก้าวข้ามขีดจำกัดนั้นได้หรือไม่) และนั่นทำให้อินสแตนซ์ของ Elastic Beanstalk ลดลง บางครั้งฐานข้อมูลทั้งหมดจะล้มเหลวหลังจากการเชื่อมต่อเหล่านั้นถึงจุดสูงสุด
ในขณะที่ตรวจสอบ JVM ของแอปพลิเคชันด้วย VisualVM ฉันสังเกตเห็นว่าในระหว่างที่มีการเชื่อมต่อสูงสุด Tomcat จะสร้างเธรดผู้ปฏิบัติงานหลายสิบเธรด ฉันเดาว่าทุก ๆ เธรดเหล่านั้นสร้างการเชื่อมต่อกับฐานข้อมูลใหม่ แม้ว่าเราจะสามารถจำกัดจำนวนของเธรดเหล่านั้นได้ (แต่แรก เซิร์ฟเวอร์จะไม่สามารถจัดการกับเธรดจำนวนมากขนาดนี้ได้) เราต้องการเข้าใจว่าอะไรเป็นสาเหตุของสิ่งนั้น เหตุใด Tomcat จึงสร้างเธรดและการเชื่อมต่อกับฐานข้อมูลของเรามากมาย นั่นเป็นสาเหตุหรือเป็นผลมาจากปัญหาในฐานข้อมูลหรือไม่ เราควรมองหาต้นตอของปัญหาจากที่ใด
ฉันใช้ Googled มามากแล้ว พยายามหาคนที่เคยมีปัญหาคล้ายๆ กัน เพื่อที่จะอธิบายปัญหา เรายังได้พยายามวิเคราะห์การค้นหาที่แพงที่สุดและข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพของฐานข้อมูลอื่นๆ แต่ดูเหมือนจะไม่มีรูปแบบที่ชัดเจน