Простой — это время, когда сайт не выполняет свою работу. Посетители могут увидеть страницу с ошибкой, страницу, которая никак не загрузится, или предупреждение браузера. Важен результат: пользоваться сайтом нельзя.
Простой — противоположность доступности. Если за 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, когда:
- корзина не работает, если нажать «добавить»,
- форма входа отклоняет любой пароль,
- страница загрузилась, но пуста, потому что не удался вызов к бэкенду,
- сообщение об ошибке выведено внутри внешне обычной страницы.
С точки зрения монитора сайт работает. С точки зрения клиента он не работает. Чтобы замечать такие сбои, нужны проверки, повторяющие настоящие действия пользователей, или оповещения на уровне приложения, а лучше и то и другое. Простая проверка адреса надёжно ловит только те сбои, когда сервер не отвечает или отвечает ошибкой, и больше ничего.
Последствия
Что именно приносит простой, зависит от назначения сайта:
- Потерянная выручка, когда клиенты не могут заказать или оплатить.
- Потерянное доверие, когда вместо ожидаемого сервиса пользователи видят ошибку.
- Нагрузка на поддержку, когда люди спрашивают, не на их ли стороне проблема.
- Штрафы по договору, когда соглашение задаёт целевые показатели доступности и компенсации.
Как обнаружить и восстановиться
Простой сокращают три вещи: быстро заметить, понять причину и иметь путь назад.
- Обнаружить. Монитор проверяет сайт с заданным интервалом и присылает оповещение после нескольких неудач подряд, чтобы один потерянный запрос никого не будил. Например, UptimeWire дважды повторяет неудачную проверку с паузой около 20 секунд и только потом открывает инцидент.
- Диагностировать. Неудачная проверка записывает причину: превышено время ожидания, ошибка соединения или код ответа. Это сужает поиск: ошибка DNS и ошибка 500 указывают на совершенно разные места.
- Восстановить. Обычные способы — перезапустить службу, откатить релиз, восстановить сертификат или исправить DNS-запись. Когда сайт снова отвечает правильно, проверки проходят и инцидент закрывается.
- Извлечь урок. Короткая заметка о причине и исправлении, сохранённая вместе с инцидентом, поможет в следующий раз.
Время от начала сбоя до момента, когда о нём кто-то узнал, тоже входит в простой. Поэтому важен интервал проверки: сайт, который проверяют раз в минуту, заметят раньше, чем тот, который проверяют раз в десять минут.