MySQL Ошибка слишком большого числа соединений при использовании Laravel 5.4 - PullRequest
0 голосов
/ 22 мая 2018

У меня есть веб-приложение Laravel 5.4, запущенное на общем хостинге ( a2hosting ), и время от времени я получаю ошибку SQLSTATE[08004][1040] Too many connections.Иногда для возобновления работы требуется несколько минут, иногда для этого требуются часы.

Я пробовал несколько способов диагностировать проблему и пытаться ее исправить, но пока ничего не помогло.

max_connections установлен на 500, а wait_timeout установлен на 8 часов.

Если я вхожу в mysql cli, пока ошибка все еще появляется, и выводит список активных процессов, которые она показывает, больше нетчем 10 ~ 15 процессов.

Также системой пользуются только около 30 человек, поэтому я понятия не имею, почему может быть достигнуто максимальное количество соединений (возможно, php не закрывает некоторые соединения по какой-то причине?).

Кто-нибудь сталкивался с такой ошибкой?и если да, что вы сделали, чтобы это исправить?Также есть идеи о том, что может быть причиной ошибки и как ее предотвратить / исправить?

Я могу предоставить больше информации о моем приложении, базе данных и сервере laravel, если это может помочь в диагностике проблемы.

1 Ответ

0 голосов
/ 27 мая 2018

Возможные причины:

  • «Пул подключений» включен (где-то) и установлен слишком высоко.
  • У веб-сервера слишком много «дочерних элементов»;понизьте предел.
  • Могут быть «медленные» запросы, требующие оптимизации.
  • Соединения не могут «отключиться» после завершения.
  • Уменьшение, а не увеличение, wait_timeout.
  • Есть несколько wait_timeout настроек;Вы изменили неправильный.
  • Увеличение количества одновременных подключений может ухудшить общую производительность.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...