Улучшение сайта, который показывает max_user_connections
После некоторых недавних изменений сайт начал показывать max_user_connections
ошибка, которая, вероятно, является признаком того, что слишком много одновременных попыток подключения к базе данных MySQL.
Я заметил, что оригинальные программисты реализовали класс "DB" для управления соединениями с базой данных, и кажется, что закрытие вызывается только в нижнем колонтитуле каждой страницы. Как я мог пойти об улучшении этого? Должен ли я создавать объект БД для каждого запроса, который я хочу сделать, а затем закрывать сразу после получения результатов?
2 ответа
Я не знаком с PHP, но закрытие DB-Connections как можно скорее всегда хорошо и не зависит от используемого языка программирования. Также попробуйте получить новое соединение с БД как можно позже.
Если вы выполняете транзакционный DML, вам также следует как можно скорее снять блокировки, зафиксировав их как можно скорее (но с опозданием по мере необходимости). Транзакции, открытые дольше, чем необходимо, могут привести к тому, что другие транзакции ожидают этого. Эти ожидающие транзакции потребляют соединение каждый раз, не делая ничего, кроме ожидания.
Ваш "DB-Class" звучит как Utility-Class для обработки таких целей.
Посмотрите и на этот вопрос.
Php уже закрывает коннект, когда скрипты заканчиваются.
Вы можете поднять максимальный лимит комм в конфигурационном файле mysql
Кроме того, выполнение вашего скрипта занимает очень много времени, вы ничего не сделаете, закрыв коннект после запроса