Ошибка "слишком много соединений" на сайте CodeIgniter - PullRequest
0 голосов
/ 09 ноября 2018

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

В последние несколько дней ошибка 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 Ответ

0 голосов
/ 09 ноября 2018

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

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

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

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

Приветствия:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...