Jmeter в командной строке Linux может запускать только ограниченное количество потоков - PullRequest
0 голосов
/ 05 сентября 2018


У меня есть план тестирования jmeter, на котором запущено 40000 потоков, а время разгона составляет 600 секунд. Я запускаю его из командной строки.

./jmeter -n -t ../../HttpTestPlan.jmx


Он отлично работает на Windows 64-битной машине. Он способен выполнить все 40000 потоков без каких-либо проблем.
Но когда я запускаю тот же план тестирования в ec2 (с привилегиями root), он может выполнять только 31208 потоков, а затем останавливает выполнение.
Что я должен сделать, чтобы убедиться, что он запускает все потоки на linux ec2 box?
Спасибо



    2018-09-05 08:04:58,148 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
    2018-09-05 08:04:58,164 INFO o.a.j.JMeter: Loading user properties from: user.properties
    2018-09-05 08:04:58,165 INFO o.a.j.JMeter: Loading system properties from: system.properties
    2018-09-05 08:04:58,170 INFO o.a.j.JMeter: Copyright (c) 1998-2018 The Apache Software Foundation
    2018-09-05 08:04:58,170 INFO o.a.j.JMeter: Version 4.0 r1823414
    2018-09-05 08:04:58,170 INFO o.a.j.JMeter: java.version=1.8.0_181
    2018-09-05 08:04:58,170 INFO o.a.j.JMeter: java.vm.name=OpenJDK 64-Bit Server VM
    2018-09-05 08:04:58,170 INFO o.a.j.JMeter: os.name=Linux
    2018-09-05 08:04:58,170 INFO o.a.j.JMeter: os.arch=amd64
    2018-09-05 08:04:58,170 INFO o.a.j.JMeter: os.version=3.10.0-862.3.3.el7.x86_64
    2018-09-05 08:04:58,171 INFO o.a.j.JMeter: file.encoding=UTF-8
    2018-09-05 08:04:58,171 INFO o.a.j.JMeter: Max memory     =1073741824
    2018-09-05 08:04:58,171 INFO o.a.j.JMeter: Available Processors =2
    2018-09-05 08:04:58,175 INFO o.a.j.JMeter: Default Locale=English (EN)
    2018-09-05 08:04:58,175 INFO o.a.j.JMeter: JMeter  Locale=English (EN)
    2018-09-05 08:04:58,175 INFO o.a.j.JMeter: JMeterHome=/home/pardema/apache-jmeter-4.0
    2018-09-05 08:04:58,175 INFO o.a.j.JMeter: user.dir  =/home/pardema/apache-jmeter-4.0/bin
    2018-09-05 08:04:58,176 INFO o.a.j.JMeter: PWD       =/home/pardema/apache-jmeter-4.0/bin
    2018-09-05 08:04:58,180 INFO o.a.j.JMeter: IP: xxxxxxxxxx Name: xxxxxxxxxxx: xxxxxxxxxxxxxx
    2018-09-05 08:04:58,183 INFO o.a.j.s.FileServer: Default base='/home/pardema/apache-jmeter-4.0/bin'
    2018-09-05 08:04:58,189 INFO o.a.j.s.FileServer: Set new base='/home/pardema/apache-jmeter-4.0/bin/../..'
    2018-09-05 08:04:58,336 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
    2018-09-05 08:04:58,355 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
    2018-09-05 08:04:58,360 INFO o.a.j.s.SaveService: Using SaveService properties version 4.0
    2018-09-05 08:04:58,366 INFO o.a.j.s.SaveService: Loading file: ../../HttpTestPlan.jmx
    2018-09-05 08:04:58,409 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
    2018-09-05 08:04:58,409 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
    2018-09-05 08:04:58,409 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
    2018-09-05 08:04:58,409 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
    2018-09-05 08:04:58,410 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
    2018-09-05 08:04:58,410 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
    2018-09-05 08:04:58,433 INFO o.a.j.JMeter: Creating summariser 
    2018-09-05 08:04:58,440 INFO o.a.j.e.StandardJMeterEngine: Running the test!
    2018-09-05 08:04:58,441 INFO o.a.j.s.SampleEvent: List of sample_variables: []
    2018-09-05 08:04:58,441 INFO o.a.j.s.SampleEvent: List of sample_variables: []
    2018-09-05 08:04:58,445 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: '.functions.'
    2018-09-05 08:04:58,445 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
    2018-09-05 08:04:58,851 INFO o.a.j.JMeter: Running test (1536149098851)
    2018-09-05 08:04:58,890 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : Thread Group
    2018-09-05 08:04:58,891 INFO o.a.j.e.StandardJMeterEngine: Starting 50000 threads for group Thread Group.
    2018-09-05 08:04:58,891 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
    2018-09-05 08:04:58,891 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=50000 ramp-up=600 perThread=12.0 delayedStart=false
    2018-09-05 08:04:58,900 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
    2018-09-05 08:04:58,913 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-2
    2018-09-05 08:04:58,919 INFO o.a.j.p.h.s.HTTPHCAbstractImpl: Local host = 10-118-9-93.ebiz.verizon.com
    2018-09-05 08:04:58,925 INFO o.a.j.p.h.s.HTTPHC4Impl: HTTP request retry count = 0
    2018-09-05 08:04:58,932 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-3
    2018-09-05 08:04:58,933 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times
    2018-09-05 08:04:58,933 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
    2018-09-05 08:04:58,933 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true
    2018-09-05 08:04:58,933 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000
    2018-09-05 08:04:58,946 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-4
    2018-09-05 08:04:58,950 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-5
    2018-09-05 08:04:58,962 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-6
    2018-09-05 08:04:58,975 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-7
    2018-09-05 08:04:59,001 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-9
    2018-09-05 08:04:59,006 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-8
    2018-09-05 08:04:59,026 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-10
    2018-09-05 08:04:59,026 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-11

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Скорее всего, у вас был файл hs_err_pid.log, сгенерированный из-за сбоя вашей JVM. Поиск такого файла для основной причины сбоя JVM.

Среди гипотез:

  • Память Linux, процесс, ограничения файловых дескрипторов
  • Недостаточно памяти в вашей системе

Обратите внимание, что потоки 40 Кбайт требуют мощного компьютера и, скорее всего, более одного, чтобы его преодолеть: - сетевые ограничения вашей карты - ЦПУ - Другие необходимые ресурсы

Ваша машина (2 процессора, 1 ГБ ОЗУ) очень коротка для этого.

0 голосов
/ 05 сентября 2018

Возможно, вам придется изменить /proc/sys/kernel/threads-max значение

Также отметьте limit.conf , так как вам может потребоваться увеличить максимальное количество открытых дескрипторов

Имейте в виду, что 40k потоков - это достаточно большое количество для одного движка JMeter, поэтому вам может потребоваться рассмотреть Распределенное тестирование , убедитесь, что у машины достаточно ресурсов для работы с точки зрения ЦП и ОЗУ , сеть, дисковый ввод-вывод и т. д., как будто JMeter не сможет отправлять запросы достаточно быстро, вы получите меньшую пропускную способность, даже если ваше приложение не будет перегружено и будет придерживаться JMeter Best Practices .

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