Пройти курс на Stepik
Главная/Материалы

Ошибка 500: что она значит и что делать инженеру поддержки

«У меня сайт не работает» — самое частое обращение в поддержку и самое бесполезное по содержанию. Если в ответе сервера код 500, круг подозреваемых сразу сужается. Разберём, что делать дальше.

Что на самом деле означает 500

Коды ответа сервера делятся на группы, и группа важнее самой цифры. Коды 4xx означают, что проблема на стороне клиента: не туда постучались, не передали нужные данные, не хватило прав. Коды 5xx означают, что запрос дошёл до сервера, сервер его понял — и сломался, пока обрабатывал.

Формулировка 500 Internal Server Error переводится буквально: «внутренняя ошибка сервера». Это ответ по умолчанию, когда приложение упало и не смогло объяснить, почему именно. Для пользователя это белая страница, для вас — сигнал, что виновата ваша сторона.

Отсюда главный вывод, который экономит время: при 500 бессмысленно просить пользователя почистить кэш, сменить браузер или перезагрузить компьютер. Он ничего не сделал неправильно. Такие просьбы только раздражают и оттягивают разбор.

Чем 500 отличается от 502 и 504

Эти три кода часто путают, а различие между ними прямо указывает, куда смотреть.

Практическое правило: 500 — «сломалось внутри», 502 — «не отвечает вообще», 504 — «думает слишком долго».

Первое, что нужно сделать

Не ищите причину сразу. Сначала определите масштаб — от этого зависит, спокойно вы разбираетесь или поднимаете всех.

Проверьте, у всех или у одного

Откройте тот же адрес сами. Если ошибка воспроизводится — это общий сбой, и обращений сейчас будет много. Если у вас всё работает, проблема связана с конкретным пользователем: его данными, его правами, его действиями.

Это разделение экономит больше всего времени. Массовый сбой чинят через инженеров и эксплуатацию, единичный — разбором конкретного случая.

Зафиксируйте точное время

Спросите у пользователя, когда именно он получил ошибку, и уточните часовой пояс. Без времени вы будете искать иголку в логах за сутки. С временем — смотрите отрезок в пару минут.

Узнайте, что именно он делал

Не «что у вас не работает», а по шагам: на какой странице был, что нажал, какие данные вводил. Ошибка при сохранении формы и ошибка при открытии списка — это две разные ошибки, даже если код один.

Где искать причину

Логи приложения

Это главный и часто единственный источник фактов. Открывайте логи за то самое время и ищите запись с уровнем ERROR и трассировкой стека — она обычно прямо называет строку кода и тип ошибки.

Если логи собираются в Kibana или похожей системе, отфильтруйте по времени и по уровню, а затем добавьте идентификатор пользователя или запроса, если он у вас проставляется. Хорошо настроенное приложение отдаёт в ответе идентификатор запроса — тогда поиск занимает секунды.

Панель мониторинга

Посмотрите на графики за последний час: нагрузка на процессор, память, свободное место на диске, количество ошибок в минуту. Резкий всплеск ошибок с определённого момента почти всегда совпадает с выкаткой новой версии или с исчерпанием какого-то ресурса.

Что изменилось

Девяносто процентов внезапных пятисоток объясняются одним вопросом: что менялось перед этим. Выкатили релиз, обновили конфигурацию, изменили схему базы, у внешнего сервиса кончился сертификат. Если сбой начался в 14:30, посмотрите, что происходило в 14:25.

Частые причины

Последний пункт — самый частый в единичных случаях. Именно поэтому важно узнать, что именно делал пользователь.

Что написать пользователю

Пока разбираетесь, ответьте. Молчание раздражает сильнее самой ошибки.

Скажите три вещи: что проблема на вашей стороне, что вы уже занимаетесь, и когда вернётесь с ответом. Не обещайте срок, которого не знаете — обещайте следующий контакт.

«Ошибка на нашей стороне, вы всё сделали правильно. Уже разбираемся, напишу в течение часа, даже если решения ещё не будет».

Когда эскалировать

Передавайте инженерам, если: ошибка массовая, если она затрагивает оплату или потерю данных, или если вы нашли в логах трассировку, но она указывает на код приложения. Чинить чужой код — не ваша задача.

Хорошая передача содержит: время, шаги воспроизведения, идентификатор запроса или пользователя, выдержку из лога и ответ на вопрос «у всех или у одного». Такая заявка решается в разы быстрее, чем «у пользователя ошибка 500, посмотрите».

Чего делать не стоит

Коротко

Код 500 означает, что сломалось у вас. Сначала определите масштаб, потом зафиксируйте время и шаги, потом идите в логи. Отвечайте пользователю до того, как нашли причину. И всегда проверяйте, что менялось перед сбоем — именно там ответ чаще всего и лежит.

Все материалы
Пройти курс на Stepik