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

Простой — противоположность доступности. Если за 30-дневный месяц доступность сайта составила 99,9%, то простой длился около 43 минут.

Плановый и внеплановый простой

Плановый простой назначают заранее. Типичные причины — миграция базы данных, обновление сервера или крупный релиз, который нельзя запустить рядом со старой версией. Хорошая практика: выбрать часы с наименьшей нагрузкой, заранее предупредить пользователей и показать понятную страницу об обслуживании. Сервер, который намеренно выключили на время работ, часто отвечает 503 Service Unavailable. Этот код сообщает о временном состоянии и может содержать заголовок Retry-After, в котором клиентам сказано, когда вернуться.

Внеплановый простой — всё остальное: сбои, которых никто не планировал. Именно он причиняет вред: приходит без предупреждения, и счёт времени идёт, пока кто-нибудь его не заметит и не устранит.

В договорах и отчётах эти два вида часто учитывают по-разному. Во многих соглашениях об уровне обслуживания объявленные работы исключены из расчёта. Относится ли это к конкретному сайту, целиком зависит от согласованных формулировок.

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

Причина Что происходит Что часто видит посетитель
Сбой сервера Машина или виртуальный сервер падает, у неё заканчивается память или место на диске, либо она перегружена Отказ в соединении, превышено время ожидания или ошибка 5xx
Проблема с сетью Неполадка на линии, правило межсетевого экрана или сбой у провайдера останавливает трафик между посетителем и сервером Превышено время ожидания, «не удаётся получить доступ к сайту»
Проблема с DNS Доменное имя не разрешается: запись неверна или удалена, либо истёк домен «Сервер не найден»
Проблема с сертификатом Истёк TLS-сертификат или он не соответствует домену Полноэкранное предупреждение браузера о безопасности
Сбой приложения Ошибка в коде, неудачное развёртывание или сломавшаяся зависимость приводят к падению приложения Ошибка 500 или пустая страница
Перегрузка Всплеск трафика или тяжёлая задача занимает все доступные ресурсы Очень медленные страницы, ошибки 503 или 504
Сторонний сервис Платёжный сервис, сервис входа или база данных, от которых зависит сайт, перестаёт отвечать Страница работает, но одна из функций не выполняется

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

Как простой проявляется в HTTP

Когда посетитель загружает страницу, сервер возвращает код ответа HTTP. Коды из диапазона 5xx, такие как 500, 502, 503 и 504, сообщают, что сбой произошёл на стороне сервера. Если до сервера вообще не удалось достучаться, кода ответа нет: есть только превышение времени ожидания или ошибка соединения. Значение каждого класса кодов описано в статье Коды ответа HTTP.

Чего не видит проверка веб-запроса

Это самое важное ограничение, и его нужно понимать. Проверка мониторинга, которая запрашивает страницу и читает ответ, может сообщить только то, что говорит сервер. Работает ли сайт на самом деле, она сказать не может.

Сервер может вернуть 200 OK, когда:

  • корзина не работает, если нажать «добавить»,
  • форма входа отклоняет любой пароль,
  • страница загрузилась, но пуста, потому что не удался вызов к бэкенду,
  • сообщение об ошибке выведено внутри внешне обычной страницы.

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

Последствия

Что именно приносит простой, зависит от назначения сайта:

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

Как обнаружить и восстановиться

Простой сокращают три вещи: быстро заметить, понять причину и иметь путь назад.

  1. Обнаружить. Монитор проверяет сайт с заданным интервалом и присылает оповещение после нескольких неудач подряд, чтобы один потерянный запрос никого не будил. Например, UptimeWire дважды повторяет неудачную проверку с паузой около 20 секунд и только потом открывает инцидент.
  2. Диагностировать. Неудачная проверка записывает причину: превышено время ожидания, ошибка соединения или код ответа. Это сужает поиск: ошибка DNS и ошибка 500 указывают на совершенно разные места.
  3. Восстановить. Обычные способы — перезапустить службу, откатить релиз, восстановить сертификат или исправить DNS-запись. Когда сайт снова отвечает правильно, проверки проходят и инцидент закрывается.
  4. Извлечь урок. Короткая заметка о причине и исправлении, сохранённая вместе с инцидентом, поможет в следующий раз.

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