Я начал писать некоторые базовые тесты в JMeter и был удивлен, что измерения настолько отличаются от измерений от Apache ab.
У меня есть гигабитная сеть, соединяющая сервер Intel i7 с Nginx и тестовую машину i5 с JMeter или ab. Первоначально я просто тестирую исходную частоту ответа на домашнюю страницу Nginx.
ab -c 1 -n 100 http://testserver.local/
дает
Document Path: /
Document Length: 151 bytes
Concurrency Level: 1
Time taken for tests: 0.078 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 38400 bytes
HTML transferred: 15100 bytes
Requests per second: 1280.77 [#/sec] (mean)
Time per request: 0.781 [ms] (mean)
Time per request: 0.781 [ms] (mean, across all concurrent requests)
Transfer rate: 480.29 [Kbytes/sec] received
Этот результат постоянно воспроизводится, +/- несколько процентов.
В JMeter у меня есть 1-пользовательская группа с 100 циклами, содержащая:
- настройка менеджера заголовков HTTP Accept-Encoding: gzip
- HTTP Get/sampler
- слушатель итогового отчета
Только с 100 образцами это дает дико непоследовательные результаты каждый раз, когда я запускаю его. Но самым поразительным фактом является то, что пропускная способность составляет всего 40 запросов в секунду (не 1280). Самая высокая зарегистрированная скорость составила 1030, и это было достигнуто только тогда, когда я увеличил до 10000 образцов.
Правильно ли я полагаю, что JMeter является неправильным инструментом для простых нагрузочных тестов, потому что его накладные расходы слишком велики, чтобы обеспечить точные измерения?