Почему упал сайт: как найти причину за 10 минут
«Сайт не работает» — сообщение, от которого у владельца бизнеса холодеют руки. Но сайт редко падает «просто так»: за пустым экраном всегда стоит конкретная причина, и найти её можно за десять минут, если идти по слоям, а не хаотично открывать всё подряд. Вот рабочий порядок действий — от «упало ли вообще» до строки в логах, которая всё объясняет.
Шаг 1. Подтвердите, что сайт упал у всех, а не только у вас
Прежде чем тревожить хостера, потратьте минуту на внешнюю проверку. Половина «падений» — локальные проблемы: глючный DNS у провайдера, VPN, антивирус или кэш браузера.
- Откройте сайт через мобильный интернет (не Wi-Fi) — другой маршрут, другой DNS.
- Попросите коллегу в другом городе или проверьте через внешний сервис доступности.
- Выполните
curl -I https://вашсайт.ru— ответ с кодом говорит больше, чем белый экран браузера.
Сайт открылся через мобильный — проблема у вас локально, сайт жив. Не открылся нигде — идём дальше. Подробный алгоритм этого шага есть в нашей статье «Сайт не работает у всех или только у меня».
Шаг 2. Прочитайте код ошибки — он уже почти всё сказал
Браузер и curl показывают, на каком слое обрыв. Запоминать всё не нужно, достаточно пяти вариантов:
- Домен не резолвится (ERR_NAME_NOT_RESOLVED, пустой
dig) — DNS. Либо запись удалили, либо домен продлить забыли, либо NS делегированы туда, где зоны больше нет. - Соединение не устанавливается (долгая тишина, timeout) — сервер не отвечает на сетевом уровне: упала машина, фаервол, закончился диск, ДДоС.
- SSL-ошибка — истёк сертификат или сломалась цепочка. Проверка:
openssl s_client -connect вашсайт.ru:443. - 502 / 503 / 504 — веб-сервер жив, но приложение за ним умерло или не успевает отвечать: упал бэкенд, кончился пул соединений с базой, долгий запрос повесил воркеров.
- 500 — ошибка в коде приложения. Смотрите логи приложения, а не веб-сервера.
Код ошибки — это адрес этажа, где сломалось. Идти сразу «в логи» без него — всё равно что искать ключи по всей квартире, включая балкон.
Шаг 3. Смотрите логи по слоям, от края к центру
Запрос идёт так: клиент → DNS → сеть → веб-сервер (nginx) → приложение → база. Логи читаем в том же порядке — от того слоя, который указал код ошибки.
- Nginx:
tail -100 /var/log/nginx/error.log—connect() failedзначит приложение не слушает порт;upstream timed out— приложение зависло. - Приложение:
journalctl -u вашсервис --since "15 минут назад"— ищите первую ошибку в окне падения, а не тысячу одинаковых после него. - Система:
dmesg -T | grep -i oom— если процесс убил OOM Killer, дело в памяти, а не в коде.df -h— забитый диск роняет сайты не реже, чем баги. - База:
too many connectionsв логах приложения — классика после роста трафика или незакрытых соединений.
Шаг 4. Совместите с таймлайном
Причина почти всегда совпадает с каким-то событием: деплой, продление сертификата, рост рекламного трафика, ночной бэкап, обновление у хостера. Зафиксируйте окно: когда пришёл первый алерт, когда сайт «ожил», что происходило за 15 минут до. Если первые ошибки начались через минуту после выката релиза — гипотеза сильная. Если в четыре утра во время бэкапа — тоже.
Шаг 5. Решите, чья это зона ответственности
- DNS и домен — регистратор или ваш DNS-провайдер.
- Сервер не отвечает совсем, диск, железо — хостер.
- 5xx после деплоя — разработчик.
- Рост трафика и таймауты — архитектура: либо масштабировать, либо кэшировать.
С этой раскладкой звонок в поддержку превращается из «всё сломалось, почините» в «с 14:02 не отвечает 80-й порт, диск и память в норме, прошу проверить сеть» — и решается в разы быстрее.
Как не расследовать это вручную в три часа ночи
Всё, что выше, хорошо работает днём и за компьютером. Ночью, с телефона, в отпуске — плохо. Поэтому рабочая схема такая: мониторинг замечает падение раньше клиентов, фейловер переключает сайт на резерв в среднем за 1–3 минуты, а вы утром спокойно разбираете логи по горячим следам — уже без потери выручки. Именно это и делает baser: радар следит с интервалом тарифа — от минуты до 10 секунд, рубильник переключает DNS автоматически, отчёт с таймлайном ждёт вас в Telegram.
Про то, во сколько обходится час простоя и как посчитать свою цифру, — в статье «Сколько стоит простой сайта».
FAQ
Сайт упал, но сервер работает. Как? Сервер — это только железо. Путь запроса длиннее: DNS, сеть, веб-сервер, приложение, база. Ломается обычно что-то одно из списка, а не железо.
С чего начинать просмотр логов? С error.log веб-сервера и journalctl приложения за окном инцидента. Ищите первую аномалию по времени, а не последнюю.
Сайт уже поднялся сам. Разбираться поздно? Нет. Логи и метрики за окном падения сохраняются — сузьте время и сопоставьте события. Причина найдётся.