Улучшение сайта, который показывает max_user_connections

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

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

2 ответа

Решение

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

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

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

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

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

Вы можете поднять максимальный лимит комм в конфигурационном файле mysql

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

Другие вопросы по тегам