Сайт не подключается к базе - причины по убыванию частоты
Сайт отвечает ошибкой подключения к базе данных. Разбираем причины по убыванию частоты: почти все они про саму базу, а не про сайт.
С чего начать
Проверяем, жива ли служба базы:
systemctl status mysqld # или mariadb, в зависимости от сборкиmysqladmin ping -u root -p # ответ mysqld is alive означает, что база отвечаетjournalctl -u mysqld -n 50 # последние строки журнала: причина остановки видна здесьОшибка подключения почти всегда означает, что отвечать некому. Служба базы либо остановлена, либо не поднялась после перезагрузки, и журнал сразу называет причину.
Подключаемся теми же данными, что и сайт:
grep -A6 "'connections'" /home/site/public_html/bitrix/.settings.phpmysql -h 127.0.0.1 -u site_user -p site_base -e 'SELECT 1'# «No such file or directory» - это про сокет: сайт ищет его не там, где база его создалаСообщение о ненайденном файле относится к сокету, а не к базе данных. Адрес
localhost заставляет искать сокет по пути из настроек, а 127.0.0.1 идёт по
сети, и это разные способы соединения.
Смотрим место и пределы:
df -h /var/lib/mysql # переполненный диск роняет базу без предупрежденияmysql -e "SHOW VARIABLES LIKE 'max_connections'; SHOW STATUS LIKE 'Threads_connected';"# приблизившееся к пределу число соединений даёт отказы в часы нагрузкиПереполненный диск и упёршийся предел соединений выглядят одинаково со стороны сайта. Оба дают отказ в подключении, и различить их можно только на сервере, а не по сообщению на странице.
Причины
-
Служба базы остановлена примерно 30% случаев
ПризнакСайт не открывается целиком, включая административную часть.
ПроверкаСмотрим состояние службы и последние строки её журнала.
Что делатьЗапускаем службу и разбираем по журналу, почему она остановилась.
-
Не тот адрес или сокет в настройках примерно 25% случаев
ПризнакОшибка про ненайденный файл при живой и отвечающей базе.
ПроверкаСравниваем адрес в настройках сайта с тем, как база принимает соединения.
Что делатьПриводим адрес к одному виду: сетевой адрес или путь к сокету явно.
-
Кончилось место на диске примерно 20% случаев
ПризнакБаза работала и упала сама, без обновлений и правок настроек.
ПроверкаСмотрим свободное место на разделе с данными базы и в журналах.
Что делатьОсвобождаем место, чистим старые журналы и добавляем оповещение о заполнении.
-
Упёрлись в предел соединений примерно 15% случаев
ПризнакОтказы приходят в часы нагрузки, а в остальное время сайт работает.
ПроверкаСравниваем число текущих соединений с настроенным пределом.
Что делатьПоднимаем предел по возможностям памяти и убираем долгие запросы, держащие соединения.
-
Неверные учётные данные после переноса примерно 10% случаев
ПризнакОшибка появилась ровно после переезда или восстановления копии.
ПроверкаПробуем подключиться в консоли теми же логином и паролем, что в настройках.
Что делатьЗаводим пользователя базы заново и приводим настройки сайта в соответствие.
Частые вопросы
Почему сайт не открывается даже в административной части?
Платформа поднимает соединение с базой до всего остального. Без него не работает вообще ничего.
Чем localhost отличается от 127.0.0.1?
Первый идёт через файл сокета, второй - по сети. При неверном пути к сокету помогает именно второй.
Как узнать, что база упала из-за диска?
По журналу службы: там прямо написано про невозможность записи. Свободное место проверяют тем же заходом.
Стоит ли просто поднять предел соединений?
Только вместе с проверкой памяти: каждое соединение её потребляет. Чаще помогает ускорение долгих запросов.
Смежное
- Ошибки сервера и базы - оглавление подтемы
- MySQL Query Error: причины по убыванию частоты - ошибки уже внутри запросов
- MySQL server has gone away: причины по убыванию частоты - соединение было, но оборвалось
- Ошибки 500 и 502: где искать причину и чем они отличаются - соседняя картина отказа
- Медленный запрос к базе: поиск, план, индекс - что держит соединения занятыми
- Сервер и поиск - устройство сервера целиком
- Слишком много соединений с базой: разбор причин - когда база отвечает, но не всем сразу