Стресс-тестирование
Оригинальное название: stress testing
Коротко
Проверка системы нагрузкой выше расчётной или в условиях нехватки ресурсов, чтобы найти точку отказа и понять, как система ломается и как восстанавливается.
Что такое «Стресс-тестирование»
Обычная проверка производительности отвечает на вопрос «выдержит ли сайт ожидаемую нагрузку». Стресс-тест задаёт другой вопрос: что будет, если нагрузка окажется в разы больше? Например, рассылка по всей базе клиентов, упоминание в популярном канале или распродажа в «чёрную пятницу». Цель — не подтвердить, что всё хорошо, а найти предел и посмотреть на поведение за ним.
Хорошая система под чрезмерной нагрузкой деградирует постепенно: замедляется, отдаёт часть страниц из кеша, вежливо отказывает лишним запросам. Плохая падает целиком, теряет заказы или после снятия нагрузки не поднимается сама.
Чем отличается от нагрузочного
Нагрузочное тестирование держит нагрузку в пределах ожидаемой и проверяет, укладывается ли время ответа в требования. Стресс-тест намеренно выходит за эти пределы. Иногда к нему относят и сценарии без роста трафика: отключение базы на минуту, заполненный диск, нехватка памяти. Оба вида входят в общую группу тестирования производительности.
Пример сценария на k6
Инструмент k6 описывает нагрузку на JavaScript. Сценарий постепенно наращивает число виртуальных пользователей, пока сайт не начнёт сбоить:
import http from 'k6/http';
export const options = {
stages: [
{ duration: '2m', target: 100 },
{ duration: '2m', target: 500 },
{ duration: '2m', target: 1500 },
{ duration: '1m', target: 0 },
],
};
export default function () {
http.get('https://staging.example.ru/catalog/');
}
Последняя ступень снижает нагрузку до нуля, чтобы увидеть, восстанавливается ли система сама.
Что смотреть в результатах
- При какой нагрузке время ответа резко растёт и появляются ошибки 502 и 504.
- Что заканчивается первым: процессы PHP-FPM, соединения с базой, память, процессор.
- Не теряются ли данные: заказы, оплаты, заявки.
- Возвращается ли сайт в норму без перезапуска вручную.
Стресс-тест запускают на копии сайта с теми же настройками сервера. Нагрузка на боевой сайт без согласования с хостингом может быть воспринята как атака и заблокирована. Найденные узкие места затем разбирают в рамках ускорения сайта.

