Mysql error 1040: Too many connections
Что означает ошибка Mysql error 1040: Too many connections? Это ошибка означает, что в данный момент исчерпан лимит на подключение к БД.
Появляется обычно там, где либо слишком сложные запросы (которые долго выполняются), либо там где много одновременных подключений. Ну, например, от 100 пользователей инициирован одновременный запрос к БД, как например в моем варианте. Ясно, что такое в реальном использовании делать нельзя, но для сбора статистики, мне это было нужно. Итак, как же быть?
А все очень просто:
Вариант А
В случае медленных запросов, оптимизируем их, добавляем индексы и т.д.
Вариант Б
Одновременные соединения. В этом случае распределяем их на разное время запуска, чтобы они были выполнены не в одинаковое время. Т.е. убрать вот такие варианты:
1 2 3 4 5 6 |
$otime = date('i'); while ( true ) { if ( $otime != date('i') ) { mysql_query('SELECT 1'); $otime = date('i'); } } |
А может быть оптимизация кода Вам не подойдет, тогда можно увеличить кол-во одновременных подключений. Это делается в файле конфигурации mysql, а именно /etc/my.cnf, вот в этой строчке:
1 2 3 |
max_connections = 250 |
Стандартное значение после установки 100. После внесения изменений, нужно рестартануть демона mysqld, делается это командой:
1 2 3 |
/etc/init.d/mysqld restart |
и теперь можно проверить, все ли ок, sql запросом:
1 2 3 |
SHOW VARIABLES LIKE 'max_connections' |
Вот и всё. Не забывайте делать резервные копии перед внесением изменений в конфигурационные файлы!
Author: | Tags: /
| Rating:
7 comments.
Write a comment