Перейти к содержимому

Фотография

JMeter многопоточность


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 9

#1 AK80

AK80

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Алексей Комаров

Отправлено 06 декабря 2011 - 11:08

Коллеги, помогите разобраться в чем засада:
простейший тест план c AMF запросом (хотя надеюсь не в этом дело):
- Thread Group
-- AMF Request (простой запрос выполняемый сервером за 5-10мс) (http://code.google.c...ter-amfsampler/)
-- Aggregate Report

Thread Group запускал 1000 лупов в 1, 10, 100 потоков с рамапом в 1 секунду: и получаю соответственно:

Label Samples Average Median 90%line Min Max Error Throughput KB/s
/amf 1000 2 3 3 1 17 0.0 87.00948403375968 39.42617245279735
/amf 10000 2 3 3 1 191 0.0 178.660758950904 80.95565639962838
/amf 100000 3 3 4 1 140 0.0 238.08560129709036 107.88253808774407

Собственно смущает, что:
1. для одного потока, с средним временем выполнения запроса в 2 мс, имеем скорость всего 90 запросов в секунду
2. для 10 потоков, среднее время осталось такое - же, а производительность возрасла всего в 2 раза...


Как сервер так и генератор нагрузки довольно приличные машины (24 ядра 40 гиг оперативы) Для Jmeter JMX - 4G
возможно конечно беда в библиотеке сериализации AMF, но почему тогда потребление CPU всего 15% по top.
Собственно как получить корреляцию между кол-вом запросов и средним временем выполнения?


PS Задача стоит сравнить два запроса на сервере во многопоточном режиме работы.
  • 0

#2 AK80

AK80

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Алексей Комаров

Отправлено 06 декабря 2011 - 11:15

Все выше перечисленное запускалось на RHEL сервере, с дефолтными настройками (только выкрутил ulimit open files == 32K). Может быть в этом дело? Запустил на ноуте под виндой, для 10 потоков получил более адекватные результаты:

amf 10000 13 12 15 9 3025 0.0 529.9417064122947 240.129835718071
  • 0

#3 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 06 декабря 2011 - 16:17

Здравствуйте.
Честно говоря, не понял вопрос. Вас смущает то, что производительность увеличилась всего в 2 раза или что она вообще увеличилась?
В принципе, у вас получается следующие
Потоки; увеличение Throughput (множитель)
1;1
10;2
100;3
В дальнейшем увидите (в общем случае), что при увеличении потоков Throughput не увеличится.

Собственно как получить корреляцию между кол-вом запросов и средним временем выполнения?

Вы рассчитываете, что при 100 потоках время выполнения будет больше, чем при 10? Ваше приложение очень против. Как мы видим оно масштабирует Ваши запросы так, что при 1, 10, 100 обрабатывает их с одинаковым временем, без очередей.

ulimit open files == 32K

Если бы приложение не закрывало дискрипторы, то запрос бы не смог обработаться (приложение, думаю, обрабатывает эту ситуацию). Посмотрите pfiles на всякий случай.
Пардон, на RHEL не pfiles, а lsof

Сообщение отредактировал AxelM: 06 декабря 2011 - 16:18

  • 1

#4 AK80

AK80

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Алексей Комаров

Отправлено 06 декабря 2011 - 22:54

Здравствуйте.
Честно говоря, не понял вопрос. Вас смущает то, что производительность увеличилась всего в 2 раза или что она вообще увеличилась?
В принципе, у вас получается следующие
Потоки; увеличение Throughput (множитель)
1;1
10;2
100;3
В дальнейшем увидите (в общем случае), что при увеличении потоков Throughput не увеличится.

Нет я не понимаю почему при среднем времени выполнения запроса 2-5 мс, я получаю производительность всего - лишь 88 запросов в секунду (для однопоточной долбежки). Как-то, мне казалось, что если пусть 5 мс среднее время отработки запроса, то сервак должен дать 200 запросов в секунду....

ulimit open files == 32K

Если бы приложение не закрывало дискрипторы, то запрос бы не смог обработаться (приложение, думаю, обрабатывает эту ситуацию). Посмотрите pfiles на всякий случай.
Пардон, на RHEL не pfiles, а lsof


да в моем сервером приложении все ок, ресурсов хватает ;) оно на богопротивной винде и IIS. ;)

проблема в другом.
у меня есть рабочая машина - ноут Core i5 Win7
и есть сервер генерации нагрузки 24 ядра и 40 гиг (дали на пару дней погонять :( ) и на нем RHEL.
Ну так вот, RHEL генерит в разы меньшие результаты на том же сервере. Причем находится он в стойке рядом с тестируемым серваком, и воткнут в один свич, без каких либо ущемлений в сетевых правах.
А вот ноут ходит через сквиды, наты, випиэны, и получает меньшии результаты........


PS ну и самое печальное, мой самописный скрипт на перле, для того же метода получает в разы большие результаты чем JMETER..... ((((((((((( По всей видимости я неправильно готовлю JMETER :((( Но где и как ума не приложу.

PPS Сегодня расписал полноценный сценарий пользователя (порядка 30 шагов). Запустил на 1 поток, все вроде как о правильно красиво и зачетно, запросик за запросиком, все 30 отработали за положенные 1-2 секунды. Терпимо...
Запускаю 10 потоков... пиздец. Агригаейшен тейбл показывает что запросы выполняются по 10-20 мс, но при этом тестплан доходит до скажем 20-го шага (степа в плане а не повтора), только спусят где-то секунд 10. Окей, может конечно подтормаживает агрегация статистики, но на серверных логах я вижу именно это же, что скрипт с 20-го шага был дернут спустя ооочень долгое время.....
Есть большое подозрение, что у меня JVM с дефолтными настройками не очень хорошо прожевывает многопоточную нагрузку. Памяти я дал 4 гига, вроде как не жалуется на нехватку. Может что--то можно подкрутит и в направлении лучше работы многопоточки?
  • 0

#5 AK80

AK80

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Алексей Комаров

Отправлено 06 декабря 2011 - 23:54

ага нашел таки батл нек....

Запускаю тесты через remoute start с ноута на RHEL сервере, где запущен сервер JMeter. Почему-то трафик до сервера, судя по логам JMeter ~ 12Mbps. Ну типа ок хорошо.. Но почему трафик от нота до JMeter Server все 30 Mbps ((((((
Что за фигня?
  • 0

#6 fesd

fesd

    Опытный участник

  • Members
  • PipPipPipPip
  • 262 сообщений

Отправлено 07 декабря 2011 - 06:22

Вы пишете про многопоточность, а проблема ведь наблюдается и при одном потоке "Нет я не понимаю почему при среднем времени выполнения запроса 2-5 мс, я получаю производительность всего - лишь 88 запросов в секунду (для однопоточной долбежки). Как-то, мне казалось, что если пусть 5 мс среднее время отработки запроса, то сервак должен дать 200 запросов в секунду....". Думаю нужно решать ее.
Когда вы запускаете на ноуте под виндой в один поток, то какая получается скорость?
Версия жметра какая?
  • 0

#7 AK80

AK80

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Алексей Комаров

Отправлено 07 декабря 2011 - 07:07

Вы пишете про многопоточность, а проблема ведь наблюдается и при одном потоке "Нет я не понимаю почему при среднем времени выполнения запроса 2-5 мс, я получаю производительность всего - лишь 88 запросов в секунду (для однопоточной долбежки). Как-то, мне казалось, что если пусть 5 мс среднее время отработки запроса, то сервак должен дать 200 запросов в секунду....". Думаю нужно решать ее.
Когда вы запускаете на ноуте под виндой в один поток, то какая получается скорость?
Версия жметра какая?


Да просто накопилось непониманий по JMeter... :(
При одном потоке и 1000 лупах получаю

/amf 1000 2 3 3 1 17 0.0 87 39


т.е. при 3 мили секундах выполнения одного запроса в среднем, всего 87 запросов в секунду :(
  • 0

#8 fesd

fesd

    Опытный участник

  • Members
  • PipPipPipPip
  • 262 сообщений

Отправлено 07 декабря 2011 - 08:26


Вы пишете про многопоточность, а проблема ведь наблюдается и при одном потоке "Нет я не понимаю почему при среднем времени выполнения запроса 2-5 мс, я получаю производительность всего - лишь 88 запросов в секунду (для однопоточной долбежки). Как-то, мне казалось, что если пусть 5 мс среднее время отработки запроса, то сервак должен дать 200 запросов в секунду....". Думаю нужно решать ее.
Когда вы запускаете на ноуте под виндой в один поток, то какая получается скорость?
Версия жметра какая?


Да просто накопилось непониманий по JMeter... :(
При одном потоке и 1000 лупах получаю

/amf 1000 2 3 3 1 17 0.0 87 39


т.е. при 3 мили секундах выполнения одного запроса в среднем, всего 87 запросов в секунду :(



Так же когда запускаете с ноутбука? И какая таки версия жметра? Если есть возможность - скинте сценарий жметра.
  • 0

#9 AK80

AK80

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Алексей Комаров

Отправлено 07 декабря 2011 - 08:51

Так же когда запускаете с ноутбука? И какая таки версия жметра? Если есть возможность - скинте сценарий жметра.

да, с ноута.

С удаленного сервера причина тормозов выяснилась. Сетка всего 30 Mbps, а почему-то при slave-master настройке на 50 потоков трафик уже почти 25 Mbps... Как-то непонянтно зачем JMeter гонит все данные на Master... Кстати а вот нафига, если я от него прошу только агрегированный отчет? Может можно как-то заставить его агрегировать на слейве?

Jmeter 2.5.1

Файл загрузить не могу :( (Сервер выдает - Вы не можете загружать файлы подобного типа). Переименовал jmx -> xml

Прикрепленные файлы

  • Прикрепленный файл  echo.xml   5,6К   3 Количество загрузок:

  • 0

#10 AxelM

AxelM

    Активный участник

  • Members
  • PipPip
  • 118 сообщений
  • ФИО:Зверев Дмитрий
  • Город:Санкт-Петербург


Отправлено 08 декабря 2011 - 10:11

Т.е. проблема в следующем:
1. Тест ноут-сервер выдает 200 req/sec
2. Тест ноут-RHEL-сервер выдает 87 req/sec
3. Трафик ноут-RHEL 25 Mb/sec
я правильно все описал?
Тогда попробуйте запустить тест RHEL-сервер c записью статистики в файл. Для наблюдения за процессом теста воспользуйтесь Console Status Logger

Честно говоря, я никогда не видел трафика в 25 Mb/sec между master-slave на таких потоках.
Думал, что в сценарии вы поставили responseData=true, но нет, все по дефолту.
Еще я бы посмотрел на AMF Sampler (под разными операционными системами, java). Я показывал, что в Jmeter сэмплеры и листенеры работают в одном потоке и, если кто-то из них тормозит, то тормозит всё.
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных