У нас есть приложение 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 создает так много потоков и соединений с нашей базой данных? Является ли это причиной или следствием проблем в базе данных? Где мы должны искать, чтобы найти корень проблемы?
Я много гуглил, пытаясь найти людей, у которых были похожие проблемы, чтобы пролить свет на проблему. Мы также пытались анализировать самые дорогие запросы и другие сведения о производительности базы данных, но, похоже, нет четкой закономерности.