Проблемы с поддержанием тривиальных номеров RPS с помощью jMeter для тестирования API - PullRequest
0 голосов
/ 08 марта 2019

Я делаю нагрузочное тестирование API с помощью JMeter.У меня есть Macbook Air (клиент), подключенный через Ethernet к тестируемой машине с нагрузкой (сервер).

Я хотел провести простой тест.Хит сервер с 5 запросов в секунду (RPS).Я создаю группу потоков параллелизма с 60 потоками, таймером формирования пропускной способности с 5 RPS на одну минуту, моим HTTP-запросом и нажимаю кнопку воспроизведения и запускаю тест.

Я ожидаю, что мой слушатель Хитов в секунду будет показывать ровную линию 5 хитов в секунду, вместо этого я вижу переменную частоту, начинающуюся с 5, затем снижающуюся до 2, а затем до 4 ... Иногдабольше, чем указанные 5 RPS (например, 6 RPS), дело в том, что это не постоянная 5. Это слишком большая переменная скорость - она ​​повсюду.И я не получаю никаких ошибок.

Мой сервер занимает от 500 мс до 3 с, чтобы вернуть ответ, основываясь на том, какая нагрузка присутствует - это то, что я тестирую.Чего я хочу добиться с помощью этого теста, так это вернуть как можно больше ответов за 500 мс под нагрузкой, а я этого не получаю.Я должен начать задаваться вопросом, является ли это ошибкой JMeter в некотором роде, но это тема для другого дня.

Когда я заменяю мой пример запроса HTTP фиктивным сэмплером, я получаю RPS, который я желаю.

Мне показалось, что у меня проблема с ресурсами JMeter, поэтому я меняю размер кучи / память на 1 ГБ, использую флаги -XX: + DisableExplicitGC и -d64 и запускаю в режиме CLI.Я никогда не получал никаких ошибок, ни до установки флагов, ни после.Кроме того, я считаю, что 5 RPS - это небольшое число, поэтому я не ожидаю, что ресурсы будут проблемой.

Стоит отметить, что иногда потоки начинают выполняться ближе к концу теста, а не вначать, я нахожу это очень странное поведение.

Что дальше?Время переходить на новый инструмент?

...