Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Нагрузочное тестирование с помощью Python


(Sergey_Sergey) #1

Коллеги, возможно кто-то сталкивался с задачей нагрузочного тестирования с помощью Python.
Нужно отрпавлять50-80 запросов в секунду(на сайт) на протяжении 20-30 секунд и принимать ответ в виде JSON’a обрабатывая статус ответа (error: 503-я ошибка nginx , или ок:запрос прошел).
Возможно ли использовать потоки в Python и как это лучше сделать? Также нужно просуммировать кол-во ответов со статусом OK в секунду.


(Dmitriy Zverev) #2

Может быть, Вам подойдёт grinder (Jython)


(Andrew Zakordonets) #3

Еще можно посмотреть в сторону Yandex Tank


(Sergey_Sergey) #4

Для grinder’a я так понимаю нужен обьязательно Jython ? Просто все тесты написаны на Python (CPython) и нет возможности перейти на Java компилятор для Python


(Andrew Zakordonets) #5

На python есть еще Multi-Mechanize Помимо этого есть еще одна хорошая тулзовина для нагрузки Web приложений - Tsung . Она позволяет делать большие нагрузки. Правда, если вы хотите запускать нагрузочные тесты своими уже написаными тестами на питоне, то тут уже другой подход.


(Dmitriy Zverev) #6

Да, там именно Jython. Если вы завязаны на CPython, то думаю, стоит посмотреть на Pylot


(Bogdan Storozhuk) #7

Если ты ограничен только пайтоном, то я тоже советую Multi-Mechanize, но из-за GIL сгенерить реквестов больше 20 в секунду будет очено трудно. Если не получится, то попробуй сам написать асинхронную штуку. Юзай что-то такое в лупе :

from multiprocessing import Pool
pool = Pool(70)
response = pool.map_async(execute_request, request_params)
responses = response.get()

Напиши функцию execute_request так чтобы она отдавала ответ и сеукнду в которую он был получен,
а потом промапь количество ответов по секундам.


(Sergey_Sergey) #8

Ребят, если кто-то знает как прикрутить и настроить Multi-Mechanize в Eclipse напишите , плизз. Установил через pip , но запустить или создать проект с Multi-Mechanize не получается.
Либо мне на почту сбросьте свои координаты multi-1985@mail.ru , если согласны провести мини-мастер класс за оплату.


(Mykhailo Poliarush) #9

Ну лучше создать новую темы с информативным описанием, что пробовал, что не получилось и какие есть ошибки. А на счет консультации, если надо пиши в личку, помогу. Детали тут http://poliarush.com/services


(Sergey_Sergey) #10

На чем пробовал: Python 2.7 + Multi-Mechanize 1.2.0
Первое с чем столкнулся после интсаляции Multi-Mechanize (ставил через pip ) создал проект
multimech-newproject my_project
при запуске multimech-run my_project в results.csv не записывались данные.
В консоли получал ошибку ERROR: unable to create output directory
фиксается путем добавления import sys в resultswriter.py

После всех этих манипуляций результат сохранялся в results.csv
Дальше столкнулся с проблемой, что группы не запускаются параллельно. Пофиксить не удалось.
Так же с этим сталкивались другие https://groups.google.com/forum/#!topic/multi-mechanize/Oy-LjZ6PVKw

  • Так же обнаружил проблему с обработкой запросов,т.к в результатх попадались запросы при которых сервер отдавал 503-ю(по сути недоступен) , но в логах результатов писался ответ как при 200-й

2.Без понятия как создавать и запускать Multi-Mechanize проект из Eclipse
задал вопрос в группе - https://groups.google.com/forum/#!topic/multi-mechanize/4P7DEIcBMHc


(Mykhailo Poliarush) #11

Хотел еще добавить пару инструментов: