Mysql connect error [localhost]: (1040) Too many connections (400)
Ошибка Mysql connect error [localhost]: (1040) Too many connections (400) возникает в случае превышения лимита одновременных соединений с базой данных MySQL.
Причины ошибки
Как сказано выше, причина проста - "Много одновременных соединений с БД". Стоит понимать, что имеется ввиду БД с которой работает Битрикс, но с этой БД может и работать другой сайт по удаленному подключению. Причины:
- Много пользователей на сайте;
- DDos атака на сайт;
- DDos атака на сайт, который использует данную БД через удаленное подключение;
- Ошибка в скрипте сайта (в следствии чего, сайт не может закрывать запросы, при этом образовывается много SLEEP запросов);
- Ошибка в скрипте сайта, который использует удаленное подключение (в следствии чего, сайт не может закрывать запросы, при этом образовывается много SLEEP запросов);
Методы обнаружения проблемы
Чтобы обнаружить, в чем именно проблема, нужноузнать количество соединений к MySql и проанализировать их (время, какой пользователь делает, с какого IP).
Пример анализа запросов к БД
Как исправить
Есть всего 3 варианта исправления: увеличить количество одновременных соединений (если проблема связанна с большим посещением сайта реальных пользователей ), отражение DDOS атаки, или оптимизацией кода сайта. Как вы понимаете, универсального рецепта нет и быть не может. Если вам не помогло увеличения лимита, и вы не знаете что делать в случае DDOS или как оптимизировать код сайта - обращайтесь к профессионалам.