Назад | Перейти на главную страницу

MySQL «Слишком много подключений» +> 6000 запросов в секунду

У нас есть довольно большая база данных mysql (innodb) с множеством запросов на вставку и 6000 запросов в секунду.

Настройки следующие:
max_connections = 1000

и обычно когда я делаю show status like '%onn%';

Threads_connected = 3

Тем не менее иногда (каждые несколько случайных минут) мы получаем "Слишком много соединений" Ошибка.

Читаю здесь: http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
что max_connections> 1000 потребляют много оперативной памяти и могут быть нестабильными.

Как справиться с такой ошибкой? Есть ли очередь запросов, которая обеспечивает согласованный поток запросов здесь?

Вы уверены в подключенных потоках?

Отказ от ответственности: я работаю с базами данных SqlServer, поэтому мои знания MySql ограничены.

По-прежнему.

Если у вас обычно только 3 подключенных потока - это БОЛЬШОЙ удар, если вы используете более 1000. Если вы используете правильный пул, это может быть результатом некоторой перегрузки, которая внезапно задерживает завершение транзакций, что приводит к БОЛЬШИМ накладным расходам новых подключений.

Я просто смотрю на свой небольшой сервер, и у меня открыто 59 подключений (объединение, поддержание их активности 2 минуты) примерно для 30 пакетов в секунду (мы делаем HPC - так что в этом случае много агентов вытаскивают статус каждую секунду, если им нужна новая работа - плюс некоторые результаты вверх и скачать). Это намного больше, чем у вас есть - за меньшие партии. если бы мои связи внезапно превысили 200, я бы действительно исследовал это. Предполагая, что у вас действительно 6000 пакетов в секунду одновременно с 3 подключениями - это 300-кратный взрыв (очень грубо) в подключениях, который действительно нужно исследовать и найти причину.

Также - определите свою оперативную память. Я имею в виду, что довольно большое. С таким количеством операторов sql я ожидал бы реального сервера (64 + ГБ памяти, 2xXeon или что-то в этом роде). 1000 подключений могут не использовать много памяти для реального сервера - хотя для небольшого vps они нужны. Но тогда в большинстве таких небольших экземпляров не выполняется 6000 выборок в секунду.