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

Моя ошибка SQL: слишком много подключений

Мой веб-сайт показывает ошибку, связанную с базой данных.

Ошибка: Предупреждение: mysql_connect () [function.mysql-connect]: Слишком много подключений в /home/host1/public_html/www.mysite.com/db_connection.php в строке 2. Ошибка подключения. Слишком много подключений.

Иногда я получаю сообщение об ошибке, но когда я обновляю страницу, скажем, через 20 секунд ошибка исчезает, и страница отображается нормально. Я попытался исправить это, поместив код, чтобы закрыть соединение sql после завершения загрузки страницы. Но даже после этого я получил эту ошибку. Можете ли вы сказать нам, что может быть не так? Это проблема сервера или это связано с моим кодом?

Если вы запустите этот запрос:

SHOW PROCESSLIST;

Вы увидите, что все соединения в настоящее время активны и что они делают. Это должно дать вам лучшее представление о том, что мешает. Со временем соединения могут зависнуть, и, возможно, они могут оставаться там долгое время. Однако более вероятно, что у вас есть взломанный сценарий (или плохо написанный сценарий, вызывающий множество блокировок).

Пара вещей, которые нужно проверить:

Вы используете mysql_pconnect для подключения к базе данных? Это создаст постоянное соединение, которое останется открытым после его установки и будет повторно использовать это соединение вместо того, чтобы каждый раз создавать новое соединение с базой данных.

Также проверьте max_connections и max_user_connections в файле my.cnf, так как вы можете достичь предела, установленного в этих двух переменных.

Вероятно, вы не закрываете соединение в своем php-скрипте. С помощью mysql_close (), который явно закрывает соединения. Использование mysql_close () вместе с mysql_connect () гарантирует, что соединение будет закрыто.

Если вы успешно закрываете соединения после завершения запросов, попробуйте увеличить max_connections в my.cnf.

Администратор MySQL в своих Пакет GUI-инструментов может дать вам представление о том, что происходит.