У нас есть довольно большая база данных 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 выборок в секунду.