Ошибки сервера и базы данных в 1С-Битрикс
Сбои сервера и базы дают 34 вопроса из собранных, и почти все они начинаются одинаково: единственная строка ошибки на белом экране вместо страницы сайта.
Что общего у этих задач
Сообщение приходит с двух разных уровней, и путать их нельзя. «Connect error» означает, что до сервера базы не достучались вовсе. «Query error» означает, что соединение есть, но конкретный запрос отклонён. Первая поломка про сервис и сеть, вторая про данные и структуру таблиц.
Текст ошибки на странице обрезан намеренно. Полный текст с запросом и кодом пишется в лог платформы, и разбор начинают именно с него, а не с того, что видит посетитель на белом экране.
Большинство сбоев базы - это место, память или блокировки, а не порча данных. Переполненный диск и упёршийся в предел пул соединений дают больше обращений, чем настоящие повреждения таблиц.
Решения подтемы
- MySQL Query Error - запрос не выполнился: дубли ключей, переполнение, блокировки.
- Ошибки 500 и 502: где искать причину - чем коды отличаются, какие журналы читать, ошибки под нагрузкой.
- Отладка на боевом сайте: журналы, режим ошибок, поиск виновника - три журнала, безопасный показ сообщений, отключение по одному.
- Сайт не подключается к базе: причины по убыванию частоты - служба, сокет, место на диске и предел соединений.
- Call to undefined function: причины по убыванию частоты - модуль, пролог, расширение и автозагрузка.
- Allowed memory size exhausted: причины по убыванию частоты - выборка целиком, лимит и зацикливание.
- Call to a member function on null - глобальные объекты, ранний код, пустая выборка.
- MySQL server has gone away - большой запрос, долгая пауза, перезапуск базы.
- Illegal mix of collations: кодировки таблиц и соединения - своя таблица, недоконвертированная база, знаки вопросов.
- Could not start session by PHP: сессия не стартует - права на каталог, место и записи, внешнее хранилище.
- Белая страница вместо сайта: разбор причин - скрытая ошибка, свой код, память, шаблон, кэш.
- Кракозябры вместо текста: кодировки файлов, базы и обмена - файлы шаблона, база и соединение, импорт и выгрузка.
- Сбор ошибок сайта в одном месте: перехват, уведомление, секреты - свой класс журнала, уведомление команде, гашение шторма, маскирование.
- Class not found: причины по убыванию частоты - модуль, автозагрузка, регистр, библиотеки.
- Доступ запрещён и код 403: кто отдал отказ - правило веб-сервера, стоп-лист защиты, ограничение админки, права.
- Ошибка сайта изнутри: слои, коды, журналы - слои запроса, кто отдаёт ошибку, где её журнал, вид на боевом.
- Ошибка проверки источника запроса: разбор причин - подпись сеанса, кэш страницы, две вкладки, потеря сессии.
- Перевод проекта на UTF-8: файлы, база, настройки - дамп и файлы, настройки языка, языковые файлы, обмен, откат.
Частые вопросы
Чем connect error отличается от query error?
Первый означает, что до сервера базы не дошли: сервис не запущен, путь к сокету не тот, порт закрыт. Второй - что соединение есть, но конкретный запрос отклонён. Причины и место разбора у них разные.
Где лежит полный текст ошибки базы?
В логе платформы и в логе самой базы. На странице сообщение обрезано намеренно: полный запрос содержит данные, которые нельзя показывать посетителю.
Почему ошибка появляется только под нагрузкой?
Обычно упирается предел одновременных соединений или таблица блокируется долгим запросом. В спокойное время тот же код работает, потому что очереди нет.
Что смотреть при коде 502?
Обработчик PHP: 502 отдаёт nginx, когда не дождался ответа от него. База при этом может быть в порядке, а PHP-процессы закончились или упали.
Связанные темы
- Сервер и поиск - устройство сервера целиком
- База данных и бэкенды - настройка и мониторинг базы
- nginx и PHP-FPM - кто отдаёт коды ошибок
- Раздел Инфраструктура