forked from yandex/yandex-tank
-
Notifications
You must be signed in to change notification settings - Fork 0
Модуль autostop
Andrey Pohilko edited this page Feb 10, 2013
·
4 revisions
Модуль получает данные от агрегатора и передает их объектам-критериям автостопа. При обнаружении объектом-критерием необходимости остановить тест, он делает это.
Секция INI-файла: [autostop]
Опции:
-
autostop - список критериев автостопа, разделенных пробелами. Формат критериев таков:
тип(параметры)
Базовые типы критериев:
-
time - остановить тест, если среднее время ответа превышает заданный порог в течение заданного времени, код выхода 21. Например:
time(1s500ms, 30s) time(50,15)
-
http - остановить тест, если число кодов HTTP, соответствующих маске, более заданного абсолютного или относительного порога, код выхода 22. Примеры:
http(404,10,15) http(5xx, 10%, 1m)
-
net - аналогично HTTP-кодам, но для сетевых кодов ответа, код выхода 23. допустима маска
xx
, означающая "все ненулевые" -
quantile - остановить тест, если выбранный процентиль выше определенного уровня таймингов в течение N секунд. Список допустимых квантилей: 25, 50, 75, 80, 90, 95, 98, 99, 100. Например:
quantile (95,100ms,10s)
-
instances - тип добавляется при подключении модуля Phantom. Тест останавливается, если число активных инстансов выше абсолютного или относительного порога, код выхода 24. Например:
instances(80%, 30) instances(50,1m)
-
metric_lower и metric_higher - срабатывают если значение метрики мониторинга ниже/выше порога в течение заданного времени, коды выхода 31 и 32. Пример:
metric_lower(127.0.0.1,Memory_free,500,10)
. Обратите внимание, что имена метрик (кроме кастомных) пишутся не через пробел, а через подчеркивание. В именах хостов можно использовать маски а-ля имена файлов (Пример: target-*.load.net).
Продвинутые типы критериев:
-
total_time — остановить тест, если N% ответов превышает порог времени ответа в течение заданного интервала времени. От time отличается тем, что аккумулирует информацию, это означает что в заданном интервале могут быть секунды, которые не удовлетворяют критерию, но весь интервал в целом удовлетворяет заданным условиям, код выхода 25. Например:
total_time(100ms,70%,3s)
-
total_http — остановить тест, если N% (или абсолютное значение) ответов пришли с кодом по заданной маске в течение заданного времени. Так же, использует аккумуляцию, код выхода 26.
total_http(5xx,10%,10s) total_http(3xx,40%,10s)
-
total_net — остановить тест, если N% (или абсолютное значение) ответов пришли с кодом по заданной маске в течение заданного времени. Аккумулирующий критерий, код выхода 27. Примеры:
total_net(79,10%,10s) total_net(11x,50%,15s)
-
negative_http — остановить тест если более N% кодов ответов не подходят под заданную маску. Например, если у нас упал backend и front начал кидать 3xx вместо 2xx, можно написать следующий критерий, код выхода 28:
negative_http(2xx,10%,10s)
. В этом примере стрельба остановится, если количество _НЕ_200ок превысит 10%. -
negative_net — остановить тест если более N% кодов ответов не подходят под заданную маску. Например, если обстреливаемое приложение стало некорретно отвечать на уровне TCP (т.е. стали лететь ошибки Protocol Error 71, а иногда ловим 104/110), то можно написать следующий критерий, код выхода 29:
negative_net(0,10%,10s)
. В этом примере стрельба остановится, если доля всех сетевых ошибок превысит 10% за последние 10 секунд. -
http_trend — автостоп, который следит за трендом ответов с заданной маской. Например, сервис корретно отвечает на 300rps, но дальше при повышении нагрузки до 350rps количество ответов начало снижаться. Тогда можем написать критерий
http_trend(2xx,10s)
. Если тренд двухсоток за последние 10 секунд начал снижаться с учетом погрешности измерения, то останавливать тест. Необходим чтобы для каждого сервиса и его конфигурации не подбирать границы времен ответа для определния момента разладки. Код выхода 30. - qsat - ???