Статистика запроса саранчи - PullRequest
0 голосов
/ 06 ноября 2018

Я рассматриваю возможность использования саранчи для некоторых моих тестов производительности. Я больше знаком с Python и нахожу саранчу намного легче для чтения, чем JMeter JMX.

Одна вещь, которую я привык делать с JMeter, - это создание моих собственных отчетов о среднем, 90%, 95% и 99% за несколько прогонов. Для этого я написал скрипт, который анализирует журналы JMeter, которые содержат информацию по каждому запросу (время ответа, размер полезной нагрузки и т. Д.), А затем объединяет все прогоны в один набор данных и генерирует среднее значение и процентили.

Я не могу найти вариант, чтобы получить этот уровень подробного входа в саранчу. Я пробовал --logfile =, но файл не содержит ничего об отдельных запросах. Я пробовал --csv =, и вывод просто содержит сводную информацию - которую нельзя использовать при попытке определить процентили в комбинации прогонов.

Есть ли способ получить подробную информацию в журнале по каждому запросу?

1 Ответ

0 голосов
/ 10 ноября 2018

Я не уверен, что это самый простой способ, но вы можете использовать механизм перехвата событий саранчи .

Давайте запустим в командной строке Python встроенный http-сервер:

python -m http.server

и создайте файл example.py с таким содержанием:

#!/usr/bin/env python
from locust import HttpLocust, TaskSet, task, events


class UserBehavior(TaskSet):
    """ Defines user behaviour in traffic simulation """

    @task()
    def index(self):
        self.client.get("/")


class WebsiteUser(HttpLocust):
    """ Defines user that will be used in traffic simulation """
    task_set = UserBehavior
    min_wait = 3000
    max_wait = 5000

    def setup(self):
        self.file = open('stats.csv', 'w')
        events.request_success += self.hook_request_success

    def teardown(self):
        self.file.close()

    # hook that is fired each time the request ends up with success
    def hook_request_success(self, request_type, name, response_time, response_length, **kw):
        self.file.write(request_type + ";" + name + ";" + str(response_time) + ";" + str(response_length) + "\n")

Теперь в той же папке, где живет example.py, запустите из командной строки:

locust -f example.py --no-web -c 10 -r 1 --host=http://localhost:8000

Если вы остановите его через некоторое время, вы найдете в файле stats.csv сведения о каждом успешном запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...