JMeter многопоточность
#1
Отправлено 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 Задача стоит сравнить два запроса на сервере во многопоточном режиме работы.
#2
Отправлено 06 декабря 2011 - 11:15
amf 10000 13 12 15 9 3025 0.0 529.9417064122947 240.129835718071
#3
Отправлено 06 декабря 2011 - 16:17
Честно говоря, не понял вопрос. Вас смущает то, что производительность увеличилась всего в 2 раза или что она вообще увеличилась?
В принципе, у вас получается следующие
Потоки; увеличение Throughput (множитель)
1;1
10;2
100;3
В дальнейшем увидите (в общем случае), что при увеличении потоков Throughput не увеличится.
Вы рассчитываете, что при 100 потоках время выполнения будет больше, чем при 10? Ваше приложение очень против. Как мы видим оно масштабирует Ваши запросы так, что при 1, 10, 100 обрабатывает их с одинаковым временем, без очередей.Собственно как получить корреляцию между кол-вом запросов и средним временем выполнения?
Если бы приложение не закрывало дискрипторы, то запрос бы не смог обработаться (приложение, думаю, обрабатывает эту ситуацию). Посмотрите pfiles на всякий случай.ulimit open files == 32K
Пардон, на RHEL не pfiles, а lsof
Сообщение отредактировал AxelM: 06 декабря 2011 - 16:18
#4
Отправлено 06 декабря 2011 - 22:54
Нет я не понимаю почему при среднем времени выполнения запроса 2-5 мс, я получаю производительность всего - лишь 88 запросов в секунду (для однопоточной долбежки). Как-то, мне казалось, что если пусть 5 мс среднее время отработки запроса, то сервак должен дать 200 запросов в секунду....Здравствуйте.
Честно говоря, не понял вопрос. Вас смущает то, что производительность увеличилась всего в 2 раза или что она вообще увеличилась?
В принципе, у вас получается следующие
Потоки; увеличение Throughput (множитель)
1;1
10;2
100;3
В дальнейшем увидите (в общем случае), что при увеличении потоков Throughput не увеличится.
Если бы приложение не закрывало дискрипторы, то запрос бы не смог обработаться (приложение, думаю, обрабатывает эту ситуацию). Посмотрите pfiles на всякий случай.ulimit open files == 32K
Пардон, на 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 гига, вроде как не жалуется на нехватку. Может что--то можно подкрутит и в направлении лучше работы многопоточки?
#5
Отправлено 06 декабря 2011 - 23:54
Запускаю тесты через remoute start с ноута на RHEL сервере, где запущен сервер JMeter. Почему-то трафик до сервера, судя по логам JMeter ~ 12Mbps. Ну типа ок хорошо.. Но почему трафик от нота до JMeter Server все 30 Mbps ((((((
Что за фигня?
#6
Отправлено 07 декабря 2011 - 06:22
Когда вы запускаете на ноуте под виндой в один поток, то какая получается скорость?
Версия жметра какая?
#7
Отправлено 07 декабря 2011 - 07:07
Вы пишете про многопоточность, а проблема ведь наблюдается и при одном потоке "Нет я не понимаю почему при среднем времени выполнения запроса 2-5 мс, я получаю производительность всего - лишь 88 запросов в секунду (для однопоточной долбежки). Как-то, мне казалось, что если пусть 5 мс среднее время отработки запроса, то сервак должен дать 200 запросов в секунду....". Думаю нужно решать ее.
Когда вы запускаете на ноуте под виндой в один поток, то какая получается скорость?
Версия жметра какая?
Да просто накопилось непониманий по JMeter... :(
При одном потоке и 1000 лупах получаю
/amf 1000 2 3 3 1 17 0.0 87 39
т.е. при 3 мили секундах выполнения одного запроса в среднем, всего 87 запросов в секунду :(
#8
Отправлено 07 декабря 2011 - 08:26
Вы пишете про многопоточность, а проблема ведь наблюдается и при одном потоке "Нет я не понимаю почему при среднем времени выполнения запроса 2-5 мс, я получаю производительность всего - лишь 88 запросов в секунду (для однопоточной долбежки). Как-то, мне казалось, что если пусть 5 мс среднее время отработки запроса, то сервак должен дать 200 запросов в секунду....". Думаю нужно решать ее.
Когда вы запускаете на ноуте под виндой в один поток, то какая получается скорость?
Версия жметра какая?
Да просто накопилось непониманий по JMeter... :(
При одном потоке и 1000 лупах получаю
/amf 1000 2 3 3 1 17 0.0 87 39
т.е. при 3 мили секундах выполнения одного запроса в среднем, всего 87 запросов в секунду :(
Так же когда запускаете с ноутбука? И какая таки версия жметра? Если есть возможность - скинте сценарий жметра.
#9
Отправлено 07 декабря 2011 - 08:51
да, с ноута.Так же когда запускаете с ноутбука? И какая таки версия жметра? Если есть возможность - скинте сценарий жметра.
С удаленного сервера причина тормозов выяснилась. Сетка всего 30 Mbps, а почему-то при slave-master настройке на 50 потоков трафик уже почти 25 Mbps... Как-то непонянтно зачем JMeter гонит все данные на Master... Кстати а вот нафига, если я от него прошу только агрегированный отчет? Может можно как-то заставить его агрегировать на слейве?
Jmeter 2.5.1
Файл загрузить не могу :( (Сервер выдает - Вы не можете загружать файлы подобного типа). Переименовал jmx -> xml
Прикрепленные файлы
#10
Отправлено 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 сэмплеры и листенеры работают в одном потоке и, если кто-то из них тормозит, то тормозит всё.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных