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: | Rating: / | Tags:


7 comments.
Write a comment