Ошибка «слишком много подключений» на сайте CodeIgniter

Я уже прочитал все вопросы / ответы по этой теме здесь о переполнении стека, но, к сожалению, никто не решил мою проблему.

В последние несколько дней ошибка mysql «слишком много подключений» постоянно появляется в журналах веб-сайта, и это приводит к зависанию всего веб-сайта для каждого клиента. На самом деле он вешает все сайты на сервере.

Итак, вот мои вопросы / замечания:

  • Есть около 50 различных клиентских баз данных, кроме 2, которые являются общими для всех клиентов.
  • pconnect уже = FALSE для всех соединений
  • В файле «php.ini» переменная «allowpersistent» включена. Делает ли это постоянные подключения mysql, даже если я пишу pconnect = FALSE? (Я не могу изменить переменную «allowpersistent», придется спросить у хостинговой компании)
  • Есть 3 файла, которые загружают базы данных, один загружает клиентскую БД, а два других загружают общие базы данных для всех клиентов, они вызываются в методе построения каждой модели, но предположительно CI должен закрывать соединения mysql после того, как он с ними сделан, И игнорировать любая «load-> database» уже загружена
  • «db-> close», очевидно, ничего не делает, потому что база данных this-> db-> сохраняет свое значение после того, как я его закрываю: P
  • Threads_connected до 1000, как я пишу это, и веб-сайт не работает 🙁
  • В конфигурации mysql max_connections = 1000, можно ли ее увеличить? Я не вижу изменений в свободной памяти, так что же может случиться?
  • Должен ли я перейти на PDO? Я использую dbdriver «mysqli»
  • Должен ли я попросить хостинговую компанию уменьшить переменную mysql ‘wait_timeout’, чтобы быстро закрыть соединение с БД?
  • Должен ли я обновить CodeIgniter? У меня есть версия 3.1.4, и теперь она на 3.1.9

Большое спасибо за вашу помощь!

1

Решение

В нашем случае решением было понизить переменную mysql «wait_timeout» с 8 часов (по умолчанию, wtf !?) до 180 секунд. И это все еще может быть снижено больше, если это необходимо. Это должно было сделать хостинговая компания, так как у нас нет корневого доступа к нашему серверу.

Все остальные решения, о которых я упоминал в этом вопросе, не работали, например, «pconnect = false» и «db-> close».

«Threads_connected» теперь всегда меньше 100 или 200, вместо почти 1000 до этого исправления.

Моя команда боролась с этой проблемой в течение двух дней, и в Интернете много людей, которые ищут решения, но без (рабочих) ответов.

Ура 🙂

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector