Skip to content

Модуль 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 - ???

Список модулей