Skip to content

Модуль Phantom

nnugumanov edited this page Sep 29, 2013 · 8 revisions

Модуль генератора нагрузки с использованием утилиты phantom.

Секция INI-файла: [phantom]

Основные опции:

  • ammofile - путь к файлу с исходными запросами
  • rps_schedule - расписание подачи нагрузки в виде RPS
  • instances - максимальное число тестирующих потоков
  • instances_schedule - расписание подачи нагрузки в виде тестирующих потоков
  • loop - ограничение повторов исходного множества запросов
  • ammo_limit - ограничение числа запросов
  • autocases - рассчитывать ли в исходном файле маркеры запросов автоматически

Существует три типа лимитов числа запросов: по плану нагрузки - определяется rps_schedule, по числу патронов - ammo_limit, по числу циклов ленты - loop. Танк завершает работу по первому наступившему ограничению. Если танк вышел по числу патронов или циклов - он сообщит об этом в логе. При стрельбе свободными инстансами по умолчанию лента используется один раз.

Дополнительные опции:

  • writelog - писать ли детальный лог запросов/ответов. Возможные значения: 0 - не писать, all - писать все, proto_warning - писать 4хх+5хх+сетевые ошибки, proto_error - писать 5хх+сетевые ошибки. По умолчанию: 0
  • ssl - включить SSL, 1 - включить, 0 - не включать, по умолчанию: 0
  • address - адрес тестируемого сервиса. Для доменных имен и адресов IPv4 может содержать порт, отделенный двоеточием. Для доменного имени делается резолв IP-адреса, а затем обратный резолв IP-адреса в имя, для проверки корректности имени. По умолчанию: 127.0.0.1
  • port - порт тестируемого сервиса, по умолчанию: 80
  • gatling_ip - использовать указанные локальные IP-адреса, а не только один (помогает при достижении лимита открытых портов). Список, разделенный пробелами
  • tank_type - тип используемого протокола. Возможные значения: http, none ("сырой" TCP). Если указано пустое значение, то элементы proto в конфиге phantom будут отсутствовать. По умолчанию: http
  • eta_file - файл, в который будет сбрасываться информация об оставшемся времени теста Опции URI-формата запросов:
  • uris - список тестируемых URI, многострочный параметр
  • headers - список заголовков для добавления в каждый запрос, в формате [Заголовок: значение], многострочный параметр
  • header_http - версия HTTP для указания в запросах, по умолчанию: 1.0

Опции кэша stpd-файлов:

  • use_caching - флаг включения кэша, по умолчанию: 1
  • cache_dir - директория для хранения файлов кэша, по умолчанию - базовая директория хранения артефактов
  • force_stepping - флаг принудительного степпинга, по умолчанию: 0

Продвинутые опции:

  • phantom_path - путь к утилите phantom, по умолчанию: phantom
  • phantom_modules_path - путь к модулям phantom, по умолчанию:/usr/lib/phantom
  • config - не генерировать конфиг для phantom, а использовать указанный
  • phout_file - вместо запуска phantom импортировать файл результатов phout
  • stpd_file - вместо генерации stpd-файла использовать указанный
  • threads - число тредов, выделяемых для обслуживания phantom, по умолчанию - 1+половина числа ядер системы
  • buffered_seconds - число секунд, на которое будет отставать агрегатор результатов, чтобы быть уверенным в том, что прочел точно все данные phout
  • additional_libs - список, разделенный пробелами, будет добавлен в секцию module_setup конфига phantom
  • method_prefix - тип объекта, несущего функциональность создания тестовых запросов. По умолчанию: method_stream
  • source_log_prefix - префикс, добавляемый к названию класса-читалки исходных данных. По умолчанию: пусто
  • method_options - дополнительные опции для объектов method, используются для Эллиптикса и пр. По умолчанию: пусто

Опции тюнинга http-модуля phantom:

  • phantom_http_line - Длина первой строки. Default value - 1K
  • phantom_http_field_num - Количество заголовков. Default value - 128
  • phantom_http_field - Размер одного заголовка. Default value - 8K
  • phantom_http_entity - Размер ответа. Фантом вычитывает не больше указанного объема данных, что следует иметь ввиду; особенно если у вашего сервиса большие ответы. Default value - 8M

Артефакты:

  • phantom*.conf_ - сгенерированный файл конфигурации
  • phout*.log_ - файл сырых результатов
  • phantom_stat*.log_ - файл посекундной информации о работе phantom
  • answ*.log_ - файл детальных запросов/ответов
  • phantom*.log_ - внутренний лог работы phantom

Мульти-стрельбы

Чтобы сделать несколько стрельб фантомом, достаточно добавить произвольное количество секций c именами phantom-N, и использовать в них те же опции что и у основной секции. Результаты всех секций будут читаться одновременно. Мульти-стрельба закончится как только закончится первая из составляющих ее стрельб. Например:

[phantom]
phantom_path=phantom
ammofile=data/dummy.ammo
instances=10
instances_schedule=line(1,10,1m)
loop=1
use_caching=1

[phantom-1]
uris=/
        /test
        /test2
headers=[Host: www.ya.ru]
        [Connection: close]
rps_schedule=const(1,30) line(1,1000,2m) const(1000,5m)
address=fe80::200:f8ff:fe21:67cf
port=8080
ssl=1
instances=3
gatling_ip=127.0.0.1 127.0.0.2
phantom_http_line=123M

[phantom-2]
uris=/3
rps_schedule=const(1,30) line(1,50,2m) const(50,5m)

Опции, которые действуют только для основной секции: buffered_seconds, writelog, phantom_modules_path, phout_file, config, eta_file, phantom_path

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