ИНСТР-500HTTP 5xx · Server ErrorRFC 9110ревизия 2026-05-07

Ошибка 500

HTTP 500 Internal Server Error — общий код «сломалось на сервере». Чем отличается от 502/503/504, как диагностировать и исправить.

⏱ работает в браузере · без регистрации
Инструмент · ИНСТР-500|real-time
calcal.ru / oshibka-500-internal-server
Загрузка инструмента…
500
Код ошибки
5xx
Server Errors
Internal
Server Error
0.1%
Целевой Error Rate

Что значит 500

500 Internal Server Error — общий HTTP-код категории 5xx (ошибки сервера). Сервер сообщает: «у меня случилось что-то нехорошее, не могу выполнить запрос». Намеренно не раскрывает деталей — иначе это была бы дыра в безопасности.

Главное отличие от 4xx: пользователь ничего не сделал неправильно. Запрос корректный, страница существует, но сервер сломался. Типичные сценарии: упавшая БД, неперехваченное исключение в коде, переполненная память, race condition.

Сравнение 500 / 502 / 503 / 504

Все четыре кода говорят «сервер не может ответить», но по разным причинам:

КодПричинаГде искать
500Bug в приложении: исключение, null reference, OOMЛоги приложения, Sentry/Rollbar
502Прокси (nginx) не достучался до приложенияЛоги nginx, проверьте upstream
503Перегрузка / обслуживание / circuit breakerМетрики нагрузки, Retry-After header
504Приложение слишком медленно отвечает (timeout)Slow query log, APM (New Relic)
Когда видите 500 — у вас bug в коде. Когда видите 502 — у вас проблема с инфраструктурой. Когда 503 — у вас проблема с capacity. Когда 504 — у вас проблема с performance. Это разные проблемы и разные команды должны решать.Site Reliability Engineering, Google, 2016

Как диагностировать 500

  1. Логи приложения. Главный источник: tail -f /var/log/your-app/error.log. В логах должен быть stack trace с файлом и строкой.
  2. Error monitoring. Sentry, Rollbar, Bugsnag — собирают 500 автоматически с контекстом. Каждое исключение видно с количеством случаев.
  3. APM (Application Performance Monitoring). New Relic, Datadog APM показывают traces — какой запрос упал, на каком SQL, сколько времени.
  4. Воспроизведение. Скопируйте запрос из логов, запустите локально / в staging. Если воспроизводится — отлично. Если нет — это race condition или зависимость от данных в проде.
  5. Недавние деплои. 90% 500 ошибок появляются после релиза. Если ошибки начались в 14:30, а релиз был в 14:25 — связь есть.
  6. Внешние зависимости. Платёжный шлюз / SMS-провайдер / S3 могут не отвечать. Проверьте их status pages.
  7. Health checks. Если ваш / health endpoint возвращает 500, значит БД / кэш / очереди недоступны.

Как предотвратить 500

  • Try/catch на границах. HTTP-handler, DB-call, external API — оборачивайте.
  • Input validation. Не принимайте данные без проверки. Используйте Joi / Zod / Yup.
  • Health check endpoint. /health проверяет всё критичное, мониторинг алертит сразу.
  • Circuit breaker. При ошибках в external API временно отключайте, не делайте миллион запросов.
  • Database connection pool. Лимит соединений, retry с backoff.
  • Rate limiting. Защищает от DDoS и неадекватных клиентов.
  • Graceful shutdown. При перезапуске обработайте in-flight запросы, не убивайте сразу.
  • Chaos engineering. Преднамеренно ломайте сервисы в staging, проверяйте устойчивость.
ИСТОЧНИКИ
  1. RFC 9110 — HTTP Semantics. IETF. datatracker.ietf.org/doc/html/rfc9110. 2022.
  2. Site Reliability Engineering: How Google Runs Production Systems. Beyer, Jones, Petoff, Murphy. O'Reilly. 2016.
  3. MDN — 500 Internal Server Error. Mozilla. developer.mozilla.org/en-US/docs/Web/HTTP/Status/500. 2024.
ЧАСТЫЕ ВОПРОСЫ

Часто задаваемые вопросы

500 Internal Server Error — общий HTTP-код, означающий «что-то сломалось на сервере, но не знаем что». Это самый «неинформативный» код в HTTP — сервер сообщает только факт ошибки, не уточняя причину. В отличие от 4xx (ошибка клиента), 500 — это вина сервера: bug в коде, упавшая БД, неперехваченное исключение.
500 — приложение упало внутри (необработанное исключение, баг). 502 Bad Gateway — прокси (nginx) не получил валидный ответ от приложения (приложение упало или порт закрыт). 503 Service Unavailable — приложение специально отказывается работать (перегрузка, обслуживание). 504 Gateway Timeout — прокси не дождался ответа от приложения за лимит. Все три (502/503/504) — это проблемы взаимодействия прокси с приложением. 500 — проблема внутри самого приложения.
Пользователь почти ничего не может сделать. (1) Обновите страницу (F5) — иногда временный сбой. (2) Подождите 5-10 минут — сайт может перезагружаться. (3) Очистите cookies / cache — иногда устаревшие данные ломают сессию. (4) Свяжитесь с поддержкой — у них есть логи. (5) Проверьте status-страницу сайта (например, status.github.com) — возможно идёт обслуживание. Если это банк / Госуслуги — возможно DDoS или плановое обслуживание.
(1) Логи приложения — главный источник. tail -f /var/log/nginx/error.log или kubectl logs pod-name. (2) Stack trace должен быть в логах: исключение, файл, строка. (3) Sentry / Rollbar / Bugsnag — error monitoring собирает 500 автоматически. (4) Воспроизведите запрос локально / в staging. (5) Проверьте недавние деплои — если 500 начались после релиза, проблема в новом коде.
(1) Database unavailable — БД упала или connection pool exhausted. (2) Out of memory — процесс убит OOM-killer. (3) Null reference — обращение к свойству undefined объекта. (4) External API down — сервис, к которому вы обращаетесь, не отвечает. (5) Infinite loop / stack overflow — неправильная рекурсия. (6) Permission denied — приложение не может записать файл. (7) Bad migration — поле БД переименовано, код использует старое имя. (8) Race condition — параллельные запросы конфликтуют.
Стек ошибки никогда не показывайте пользователю в production — это security risk (раскрывает структуру кода, версии библиотек, пути файлов). Покажите дружелюбную страницу: «Что-то пошло не так. Мы работаем над этим. Попробуйте позже или свяжитесь с поддержкой». Логируйте error ID на сервере, покажите его пользователю — поддержка сможет найти ошибку в логах. Stack trace оставьте только в development и логах.
(1) Try/catch — оборачивайте опасные операции (внешние API, БД, файлы). (2) Validation — проверяйте входные данные до использования. (3) Health check — endpoint /health проверяет БД, кэш, очереди — мониторинг сразу видит проблему. (4) Circuit breaker — при ошибках в external API не делайте миллион попыток, отключайтесь временно. (5) Rate limiting — защита от перегрузки. (6) Graceful shutdown — при перезапуске не теряйте in-flight запросы.
Да, и сильно. Если поисковый бот (Googlebot, Yandex Bot) получает 500 при индексации, страница не попадает в индекс. Если 500 повторяется — страница может быть удалена из индекса. Массовые 500 за короткий период могут понизить trust сайта в целом. Решение: настройте мониторинг 5xx ошибок (Grafana / Datadog), реагируйте быстро. Цель — Error Rate < 0.1% (1 ошибка из 1000 запросов).
Лиана Арифметова
АВТОРverifiedред. calcal.ru

Лиана Арифметова

Создатель и главный редактор

Миссия: демократизировать сложные расчёты. Превратить страх перед числами в ясность и контроль. Девиз: «Любая повторяющаяся задача заслуживает своего калькулятора».

Mathematical Engineering · МФТИ · редактирует каталог с 2012 года

Был ли этот калькулятор полезен?

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ

Инструмент справочный — не заменяет эксперта

Только для информационных целей. Все расчёты, результаты и данные, предоставляемые инструментом, носят исключительно ознакомительный и справочный характер. Они не являются профессиональной консультацией — медицинской, юридической, финансовой, инженерной или иной.

Точность результатов. Калькулятор основан на общепринятых формулах и методиках, однако фактические результаты могут отличаться в зависимости от индивидуальных условий, исходных данных и применяемых стандартов. Мы не гарантируем полноту, точность или актуальность приведённых расчётов.

Профессиональные решения — медицинские, финансовые, инженерные — должны приниматься только после консультации с квалифицированным специалистом. Не используйте автоматический расчёт как единственное основание для важных решений.

Ограничение ответственности. Авторы и разработчики сервиса не несут ответственности за прямой или косвенный ущерб, возникший из-за использования данных расчётов. Пользователь принимает на себя всю ответственность за интерпретацию результатов.