Chúng tôi có một ứng dụng Tomcat chạy trên Elastic Beanstalk và cơ sở dữ liệu MySQL của chúng tôi được lưu trữ trên AWS RDS (2 hoặc 3 phiên bản t3.medium). Kể từ khi chúng tôi nâng cấp từ MySQL 5 lên MySQL 8 (hiện tại là 8.0.23), chúng tôi đã gặp sự cố xảy ra khoảng một lần một tuần.Hầu hết các cơ sở dữ liệu đều ổn, nhưng sau đó, đột nhiên, số lượng kết nối tăng vọt (thậm chí đôi khi vượt quá giới hạn 307 kết nối trong phạm vi 1 phút, đây cũng là điều chúng tôi không hiểu. nó có khả năng vượt quá giới hạn đó không?) và điều đó khiến các phiên bản Elastic Beanstalk bị xuống cấp. Đôi khi toàn bộ cơ sở dữ liệu gặp sự cố sau khi kết nối đạt đến đỉnh điểm.
Trong khi giám sát JVM của ứng dụng bằng VisualVM, tôi nhận thấy rằng, trong các đỉnh kết nối đó, Tomcat đột nhiên tạo ra hàng tá chuỗi công nhân. Tôi đoán là mỗi một trong những chủ đề đó thiết lập một kết nối mới với cơ sở dữ liệu. Mặc dù chúng tôi có thể giới hạn số lượng luồng đó (xét cho cùng, máy chủ sẽ không thể xử lý nhiều luồng như vậy ngay từ đầu), nhưng chúng tôi muốn hiểu nguyên nhân gây ra điều đó. Tại sao Tomcat tạo ra quá nhiều chủ đề và kết nối đến cơ sở dữ liệu của chúng tôi? Đó là nguyên nhân hay hậu quả của các vấn đề trong cơ sở dữ liệu? Chúng ta nên nhìn vào đâu để tìm ra gốc rễ của vấn đề?
Tôi đã Google rất nhiều, cố gắng tìm những người gặp phải vấn đề tương tự để làm sáng tỏ vấn đề. Chúng tôi cũng đã thử phân tích các truy vấn tốn kém nhất và các thông tin chuyên sâu khác về hiệu suất cơ sở dữ liệu nhưng dường như không có mẫu nào rõ ràng.