t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как провести нагрузочное тестирование в JMeter c 5000 - 15000 пользователями и метриками по времени ответа?

jmeter
test
testng
java
Теги: #<Tag:0x00007f21d107dfb0> #<Tag:0x00007f21d107dd58> #<Tag:0x00007f21d107dbf0> #<Tag:0x00007f21d107d9e8>

#1

Как провести нагрузочное тестирование в JMeter c 5000 - 15000 пользователями и метриками по времени ответа? Просто у меня JMeter уже не выдерживает такой нагрузки - нагрузка на сеть почти 100% и на цп почти 95%, да и ошибки(согласно summary report) достигают 40%.
P.S. У меня в тесте порядка 25 HTTP реквестов, но при проведении даже с одним реквестом и с 5000 пользователями уже лагает и ошибки до 40%. Может дело в настройка треда и надо увеличить время(сейчас 5000 юзеров и 300 секунд)?


(Valentin G ) #2

Можно использовать сервисы, типа Blazemeter, но для большого кол-ва пользователей/запросов надо уже доплачивать.


#3

А может есть какие-нибудь бесплатные инструменты?


(Vasiliy Rakshin) #4
  1. Надо разобраться с ошибками. Их должно быть как можно меньше, 5% это уже очень плохо. Какие-то параметры у вас не очень хорошо передаются. Либо, если уж всё очень просто с параметрами, то это может говорить о том, что уже сам сервер не справляется с нагрузкой, и надо смотреть нагрузку на меньшие значения пользователей (до 1000). Само появление ошибок и есть результат тестирования.
  2. Время разогрева тоже не должно быть 1-2 секундой, хотя бы 1,5-2 секунды на пользователя. А само время тестирования вообще может быть разным, всё зависит от того что вы хотите проверить. Час, 8 часов, сутки, например, т.е. время разогрева + время тестирования - общее время.
  3. Надо запускать саму нагрузку в non_gui режиме http://jmeter.apache.org/usermanual/get-started.html#non_gui
  4. Надо более мощный комп, хотя я сомневаюсь, что дело в нём (обычно проблема может быть с памятью, 16 гигов может быть необходимо).
  5. Если уж так хочется нагрузку на бооольшое количество пользователей - то jMeter поддерживает распределение нагрузки - http://jmeter.apache.org/usermanual/remote-test.html

#5

Спасибо за информацию, буду пробовать

У меня такие типы ошибок, как правило выдаёт:
Non HTTP response code: javax.net.ssl.SSLHandshakeException
Non HTTP response message: Remote host closed connection during handshake
Non HTTP response code: org.apache.http.NoHttpResponseException
Non HTTP response message: {нужный сайт}:443 failed to respond
Non HTTP response code: java.net.SocketException Non HTTP response message: Socket closed

А в компе 8 гигов оперативы


(Vasiliy Rakshin) #6

Чтобы проверить что у вас из-за чего ошибки и вообще что всё корректно работает, надо использовать View Results Tree


Включаете нужный тред, запускаете нагрузку и ждёте ошибок, и разбираетесь с ними. Отладили хотя бы для 10 пользователей - тогда можно уже попробовать и для 100.
Сокет клозед - похоже что вашу нагрузку фаервол режет (надо уточнить, что на стенд вы можете ломиться таким количеством пользователей). Ломиться надо внутри сети, надо проверить, что вы ходите на стенд не через внешнюю сеть.


#7

А как узнать через какую сеть я ломлюсь - внутреннюю или через внешнюю? У меня при малом кол-ве юзеров “всё работает как швейцарские часы” , а когда уже достаточное кол-во, то проскакивают иногда ошибки(где-то 0,32%), соответственно чем больше юзеров, тем больше ошибок:

Response code: Non HTTP response code: javax.net.ssl.SSLHandshakeException
Response message: Non HTTP response message: Remote host closed connection during handshake

Non HTTP response code: java.net.SocketException
Non HTTP response message: Socket closed


(Vasiliy Rakshin) #8

https://yandex.ru/search/?text=tracert


#9

Как понять результат?

Screenshot_1


(Denis Veselovskiy) #10

А с чего вы взяли что ваша SUT способна больше 5 rps выдержать?)


(Юрий Аксютин) #11

При запуске тестов с локальной машины существуют, как минимум, два узких места

  1. Количество памяти, которое выделяется процессу JMeter по умолчанию. Для Windows эти настройки находятся в jmeter.bat и касаються настройки виртуальной машины Java. Например:
    if not defined HEAP (
    rem See the unix startup file for the rationale of the following parameters,
    rem including some tuning recommendations
    set HEAP=-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m
    )
    надо посмотреть доку по Java, какие настройки можно задавать

  2. Количество сокетов предоставляемое по умолчанию в Windows и время их освобождения после использования. С этими параметрами связана ошибка java.net.SocketException. Как описано в этой доке https://docs.oracle.com/cd/E26180_01/Search.94/ATGSearchAdmin/html/s1207adjustingtcpsettingsforheavyload01.html

Но все равно количество потоков на одной машине ограничено(зависит от железа). Для того чтобы “дешево” обойти это ограничение, JMeter можно зарускать через грид, как было описано в ответах выше


#12

Я пытался запустить jmeter в non-gui режиме и ничего не произошло, что делать?


#13

Добавить Jmeter в переменную среды в Windows