Улучшение сайта, который показывает max_user_connections - PullRequest
0 голосов
/ 06 июня 2011

После некоторых недавних изменений сайт начал показывать ошибку max_user_connections, которая, вероятно, является признаком того, что слишком много одновременных попыток подключения к базе данных MySQL.

Я заметил, что оригинальные программисты реализовали класс "DB" для управления соединениями с базой данных, и кажется, что закрытие вызывается только в нижнем колонтитуле каждой страницы.Как я мог пойти об улучшении этого?Должен ли я создавать объект БД для каждого запроса, который я хочу сделать, а затем закрывать сразу после получения результатов?

Ответы [ 2 ]

2 голосов
/ 06 июня 2011

Я не знаком с PHP, но закрытие DB-подключений как можно скорее всегда хорошо и не зависит от используемого языка программирования. Также попытайтесь получить новое соединение с БД как можно позже.

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

Ваш "DB-Class" звучит как Utility-Class для обработки таких целей.

Посмотрите и на этот вопрос .

0 голосов
/ 06 июня 2011

Php уже закрывает коннект, когда скрипты заканчиваются.

Возможно, вы захотите увеличить максимальный лимит комм в конфигурационном файле mysql

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

...