Ошибка 500 Internal Server Error — что значит и как исправить
HTTP 500 Internal Server Error — это код ответа, который сервер отдаёт когда что-то сломалось в приложении и нет более конкретного кода чтобы описать проблему. Это самая частая «общая» ошибка сервера: она означает «у меня внутри проблема, но я не могу сказать какая именно».
- 🚨 Сайт не работает: пользователи видят ошибку, ничего не открывается
- 🔍 Причина — на стороне сервера (а не у пользователя или провайдера)
- 🛠️ Чинится разработчиками или системным администратором сайта
- 📋 Главный инструмент диагностики — логи сервера (nginx error.log, app.log)
Частые причины
Section titled “Частые причины”1. Ошибка в коде приложения
Section titled “1. Ошибка в коде приложения”Самая частая причина. В PHP, Python, Node.js приложении произошло исключение, которое не было обработано. Например:
- Не удалось подключиться к базе данных
- Деление на ноль или другая логическая ошибка в коде
- Превышен лимит памяти PHP/Python-процесса
- Не найден файл который ожидался
2. Проблемы с базой данных
Section titled “2. Проблемы с базой данных”- БД упала или перегружена
- Превышен лимит подключений (
max_connections) - Заблокирована таблица из-за долгой транзакции
- Не хватает места на диске под БД
3. Конфигурация веб-сервера
Section titled “3. Конфигурация веб-сервера”- Ошибка в
.htaccess(Apache) - Неправильные права на файлы (CHMOD)
- Закончилось место на диске
- Нет прав на запись в
tmp/илиlogs/
4. Серверный софт упал
Section titled “4. Серверный софт упал”- Падение PHP-FPM, Python-приложения, Node.js-процесса
- Перезапуск сервиса который застрял
- OOM-killer убил процесс из-за нехватки памяти
Как диагностировать
Section titled “Как диагностировать”1. nginx error log:
sudo tail -100 /var/log/nginx/error.logЗдесь будут видны ошибки upstream-сервера (PHP-FPM, gunicorn и т.п.).
2. Лог приложения:
- PHP/Laravel:
storage/logs/laravel.log - Django:
logs/django.logилиstderr - Node.js: куда вы пишете логи (PM2, journalctl, файл)
- Rails:
log/production.log
3. Системный лог:
sudo journalctl -u nginx --since "10 minutes ago"sudo journalctl -u php8.2-fpm --since "10 minutes ago"4. Состояние сервиса:
sudo systemctl status nginxsudo systemctl status php8.2-fpmКак исправить
Section titled “Как исправить”Зависит от того что показали логи. Несколько типичных сценариев:
Сценарий A: упала база данных
sudo systemctl status mysql # или postgresqlsudo systemctl restart mysqlСценарий B: PHP-FPM завис
sudo systemctl restart php8.2-fpmСценарий C: кончилась память (OOM)
free -h # посмотреть текущую памятьdmesg | grep -i kill # был ли OOM-killerРешение: увеличить swap или RAM, оптимизировать приложение.
Сценарий D: закончилось место на диске
df -hРешение: очистить логи, временные файлы, увеличить диск.
Сценарий E: ошибка в свежем релизе Откатите последний деплой — часто 500-я появляется после неаккуратного обновления кода.
Если не разработчик
Section titled “Если не разработчик”Если вы не технический специалист и видите 500 на своём сайте:
- Сначала позвоните хостеру — если у вас shared/cloud хостинг, проблема может быть у них
- Свяжитесь с разработчиком который ведёт ваш сайт — у него есть доступ к логам
- Если ничего не помогает — у нас есть инструмент: подключите ваш сайт к Monisite, и мы сразу заметим повторение проблемы, поможем понять закономерность
Чем поможет Monisite
Section titled “Чем поможет Monisite”Если ваш сайт периодически падает с 500-ой ошибкой, и вы об этом узнаёте только от клиентов — это признак того, что нужен внешний мониторинг. Monisite:
- Проверяет ваш сайт каждую минуту из 3 регионов
- При появлении 500-й сразу присылает уведомление в Telegram/MAX/email
- Показывает в кабинете историю всех инцидентов — видно когда падало, сколько длилось, был ли периодический сбой
- Бесплатно, без лимита сайтов
Что дальше
Section titled “Что дальше”- 502 Bad Gateway — частая причина которую путают с 500
- 503 Service Unavailable
- Все коды ошибок