Запросы в яндексе статистика: Подбор слов

tanktools · PyPI

Яндекс-танк готовит phout файл со статистикой после нагрузочного тестирования. Модуль tanktools помогает парсить такие файлы и конвертировать в DataFrame. Вы можете использовать модуль pandas в ручном режиме для обработки DataFrame. или использовать встроенные функции.

Генерировать боеприпасы Яндекс-танка из файлов pcap или har с помощью pcap2ammo или har2ammo сумы. HTTP-запросы извлекаются полностью с заголовками и телом.

Так что можно:

  • расчет квантилей

  • получить информацию о тайминге, задержке, кодах состояния

  • извлекать запросы по отметке времени, тегу и другим столбцам

  • группировать и анализировать конкретные данные, такие как общий/частичный RPS, средний размер запроса/ответа

  • расчет статистических показателей

  • преобразовать файл pcap в боеприпасы

  • преобразовать файл har в боеприпасы

  • фильтровать и модифицировать запросы на генерацию боеприпасов

Установка

 pip install tanktools 

Примеры

Выберите DataFrame по метке времени

Возможен разбор части статистики по времени и общему количеству

 от Tanktools Import Phout
флаги = {
    'from_date': '2018-01-18 20:09:50. 123',
    'to_date' : '2018-01-18 20:10:00.456',
    «лимит»: 100
}
данные = phout.parse_phout('phout.log', флаги)
print("Общее количество: %d" % phout.size(data)) 
 Общее количество: 100 

Печать процентилей

 данные = phout.parse_phout('phout.log')
phout.print_quantiles(данные, 'receive_time') 
 процентили для 150030 запросов
    от 18-01-2018 20:09:42.983
    до 2018-01-18 20:10:55.108:
квантиль (%) Время_приема (мкс)
        10,0 9
        20,0 9
        30,0 10
        40,0 10
        50,0 10
        60,0 10
        70,0 11
        80,0 12
        90,0 13
        95,0 14
        98,0 16
        99,0 17
        100,0 716 

Примечание

Обратите внимание, тайминги исчисляются в микросекундах.

Медиана задержки печати

 данные = phout.parse_phout('phout.log')
# Преобразование и печать времени в миллисекундах
print("\n\nМедиана задержки: %d мс" % int(data.latency.median() / 1000)) 
 Медиана задержки: 30 мс 

Получить RPS

 данные = phout. parse_phout('phout.log')
rps = phout.get_rps(данные) 

Распечатать статистику ответов HTTP

 данные = phout.parse_phout('phout.log')
phout.print_http_responses(данные) 
 Количество HTTP-кодов в процентах (%)
     500 83429 56,38
     200 61558 41,60
     502 2944 1,99
       0 41 0,03 

Выберите 200 ответов OK и распечатайте медиану задержки

 данные = phout.parse_phout('phout.log')
selected_http_responses = данные [data.proto_code == 200]
print("Средняя задержка для 200 OK: %d" %
      selected_http_responses.latency.median()) 
 Медиана задержки для 200 OK: 3539 

Распечатать средний размер запроса/ответа

 print("Средний запрос/ответ: %d / %d байт" % (
    data.size_in.astype(float).mean(),
    data.size_out.astype(float).mean()
)) 
 Ср. Запрос/Ответ: 364/26697 байт 

Примечание

Обратите внимание, для корректной работы функции среднего необходимо преобразовать данные в число с плавающей запятой

Печать RPS по N-му запросу

 print("RPS по запросу:")
chunk_size = int (phout. size (данные) / 2)
для начала в диапазоне (0, phout.size (данные), chunk_size):
    data_subset = phout.subset (данные, начало, размер блока)
    print("\t%s: %.2f" %
          (начало + chunk_size, phout.get_rps(data_subset))) 
 RPS по запросу:
    73986: 2062,50
    147972: 2530,56 

pcap2ammo

Преобразовать файл pcap в боеприпасы Яндекс-танка

 файл pcap2ammo.pcap 
 73
ПОЛУЧИТЬ https://rambler.ru/ HTTP/1.1\r\n
Хост: rambler.ru\r\n
Длина содержимого: 0\r\n\r\n 

Подсчет статистики по HTTP-запросам

 pcap2ammo -S файл.pcap
Статистика:
    всего: 1
    полный: 1
    неверно: 0
    неполный: 0 

Печать в файл

 pcap2ammo -o out.ammo file.pcap 

Фильтр пакетов TCP/IP

 pcap2ammo -f 'ip.src==10.10.10.10 и tcp.dport==8080' file.pcap 

Фильтр HTTP-пакетов

 pcap2ammo -F '"rambler.ru" в файле http.uri.pcap 

Вы можете использовать логические выражения в фильтрах

 pcap2ammo -F '"keep-alive" в http. headers["connection"] или "Keep-alive" в http.headers["connection"]' file.pcap 

Строковые функции через заголовки HTTP

 pcap2ammo -F '"keep-alive" в http.headers["connection"].lower()' file.pcap 

Использовать также без фильтров

 pcap2ammo -F '"rambler.ru" != http.headers["хост"]' файл.pcap 

хар2аммо

Преобразовать файл pcap в боеприпасы Яндекс-танка

 файл har2ammo.har 
 73
ПОЛУЧИТЬ https://rambler.ru/ HTTP/1.1\r\n
Хост: rambler.ru\r\n
Длина содержимого: 0\r\n\r\n 

Подсчет статистики по HTTP-запросам

 har2ammo -S файл.har
Статистика:
    всего: 1
    полный: 1
    неверно: 0
    неполный: 0 

Печать в файл

 har2ammo -o out.ammo file.har 

Фильтр HTTP-пакетов

 har2ammo -F '"rambler.ru" в http.uri' файл.har 

Вы можете использовать логические выражения и функции Python в фильтрах

 har2ammo -F '"keep-alive" в http. headers["connection"] или "Keep-alive" в http.headers["connection"]' file.har
har2ammo -F '"keep-alive" не в http.headers["connection"].lower()' file.har 

Подробнее о фильтрах смотрите в описании пакета pcaper.

Анализ запросов Яндекса Марии Рубцовой, Олега Павенкова :: SSRN

Proceedings of the Feminist Art Conference 2017: Embodied Resistance, Toronto, ON, 21 января 2017

Опубликовано: 26 сентября 2017 г.

Смотреть все статьи Марии Рубцовой