Сбой базы данных Grails / Hibernate при загрузке:Не удается подключиться (даже при объединении в пул)
-
05-09-2019 - |
Вопрос
У меня есть приложение в Grails.Я использую Hibernate для доступа к базе данных (согласно стандартным правилам grails) Я использую MySQL, и сайт работает стабильно (в течение 6 месяцев).
Я провожу нагрузочное тестирование и недавно обнаружил, что база данных отклоняет подключения при загрузке.
Используя MySQL Server 5, я вижу подключенные потоки, зависающие в районе 20.Думал, я прыгаю между 11 и 30.
mysql> show status like '%con%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| Aborted_connects | 72 |
| Connections | 65539 |
| Max_used_connections | 101 |
| Ssl_client_connects | 0 |
| Ssl_connect_renegotiates | 0 |
| Ssl_finished_connects | 0 |
| Threads_connected | 1 |
+--------------------------+-------+
7 rows in set (0.00 sec)
Конфигурация моей базы данных стандартная.(Сервер MySQL установлен локально, не показан)
dataSource {
pooled = false
driverClassName = "com.mysql.jdbc.Driver"
username = "username"
password = "secret"
maxIdle = 15
maxActive = 100
}
Должен ли я исследовать C3P0?Или мне следует увеличить свой maxActive до 1000 и надеяться на лучшее?
Решение
О какой ошибке сообщает Grails, когда не удается установить соединение с базой данных?Тайм-аут?Отказался?
Когда вы запускаете свой тест, насколько загружена коробка?Процент использования процессора, памяти и т.д.
Возможно, база данных просто настолько перегружена, что Grails задерживает получение подключений.Если вы хотите обрабатывать нагрузку, вам нужно будет перейти к объединенным подключениям к базе данных.Без объединения Grails будет открывать и закрывать соединение с базой данных при каждом запросе.
Другие советы
Проверьте свою конфигурацию mysql (/etc/mysql.conf или ее локальный эквивалент), в частности, параметры max connections и max conn для каждого пользователя;это звучит так, как будто это может исходить из mysql, а не из grails.