База данных Grails / Hibernate падает при нагрузке: невозможно подключиться (даже при объединении в пул) - PullRequest
5 голосов
/ 21 февраля 2009

У меня есть приложение в 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 и надеяться на лучшее?

Ответы [ 2 ]

4 голосов
/ 21 февраля 2009

Какую ошибку Grails сообщает, когда не может подключиться к базе данных? Тайм-аут? Отказался?

Когда вы запускаете тест, насколько загружен ящик? Процент CPU, использование памяти и т. Д.

Возможно, база данных настолько перегружена, что Grails перестает получать соединения. Если вы хотите справиться с нагрузкой, вам нужно перейти к соединениям с пулом БД. Без объединения Grails будет открывать и закрывать соединение с БД при каждом запросе.

0 голосов
/ 28 февраля 2009

Проверьте свою конфигурацию mysql (/etc/mysql.conf или ее локальный эквивалент), в частности, максимальное количество подключений и максимальное количество подключений для каждого пользователя; это звучит так, как будто это исходит от mysql, а не от grails.

...