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

Фотография

Тестирование производительности в JMeter, помогите реализовать


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

#1 ievgen

ievgen

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

  • Members
  • Pip
  • 4 сообщений

Отправлено 20 сентября 2017 - 08:50

Добрый день

В нагрузочном тестирование я новичок, поэтому прошу помочь грамотно реализовать.

 

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

 

Мне дали данные о том что на данный момент система обслуживает 60 тыс пользователей в день. Это поисковая система которая ищет ближайшие магазины в которых есть нужный вам товар

 

И дали кейсы которые они хотят протестировать на нагрузку

 

На данный момент для отладки тестов мы подняли у себя на сервере данный веб ресурс, я записал при помощи рекордера данные кейсы и попробовал нагрузить 

время ответа сервиса 3-4 секунды.

Для начала я взял простой кейс открытие страницы, я указал в groupThreads 1000  тредов, rump-up 120 sec  и поставил отметку всегда. JMeter  при достижении отметки 800 тредов начинает тормозить и достигнуть 1000 тредов не может, при том что ресурсы (ЦП и память) загружены всего наполовину. При таких результатах я понимаю что 60 тыс я не нагружу. Нормально работает при 700 тредах и ошибок не выдает

 

Как правильно сделать нагрузку 

 

 


  • 0

#2 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 20 сентября 2017 - 09:09

надо проверить загрузку сети ещё, может пропускная способность сети-сетевой карты достигла 80%

 

ещё про ЦП проверить что именно загружено "на половину" - каждое ядро на половину? одно ядро на 100% а другое 0? так же смотреть загрузку потоков(тредов)

 

если что, джейметер поддерживает распределённое тестирование, когда с центрального компа можно создавать нагрузку через несколько других машины


  • 0

#3 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 20 сентября 2017 - 09:26

60000 пользователей в день, не одновременно.
Нагружающий сервер и нагружаемая система должны стоять в одной стойке, а не так, что сервис в амазоне а jmeter в офисе на ноуте через вайфай.
1000 тредов на машину ЕМНИП для jmeter много. Ну и сразу вопрос, что за машина? и детали загрузки, как описал Spock
  • 1

#4 ievgen

ievgen

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

  • Members
  • Pip
  • 4 сообщений

Отправлено 20 сентября 2017 - 09:59

60000 пользователей в день, не одновременно.
Нагружающий сервер и нагружаемая система должны стоять в одной стойке, а не так, что сервис в амазоне а jmeter в офисе на ноуте через вайфай.
1000 тредов на машину ЕМНИП для jmeter много. Ну и сразу вопрос, что за машина? и детали загрузки, как описал Spock

1. Я понимаю что 60000 это не одновременно, вот и просят узнать сколько на данный момент выдержит одновременно.

2. На данный момент так и получается что система развернута на тестовом сервере, а нагрузка делается на рабочем, не особо мощном, ноуте (4-х ядерном cor-i3, 8GB ОЗУ), правда не через вайфай. Можно ли развернуть jmeter на том же сервере где и развернуто веб приложение? Или в таком случае я буду получать некорректные данные? И если 1000 тредов на машину много как сделать нагрузку приложения чтоб оно упало?


  • 0

#5 ievgen

ievgen

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

  • Members
  • Pip
  • 4 сообщений

Отправлено 20 сентября 2017 - 10:02

надо проверить загрузку сети ещё, может пропускная способность сети-сетевой карты достигла 80%

 

ещё про ЦП проверить что именно загружено "на половину" - каждое ядро на половину? одно ядро на 100% а другое 0? так же смотреть загрузку потоков(тредов)

 

если что, джейметер поддерживает распределённое тестирование, когда с центрального компа можно создавать нагрузку через несколько других машины

ЦП нагружается равномерно, сеть тоже гдето-то на половину но с кратковременными пиками на 100%, во время работы JMeter


  • 0

#6 checo

checo

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

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 20 сентября 2017 - 10:16

Откуда данные, что память загружена наполовину?

Если это Windows, и использование памяти просто посмотрели в диспетчере задач, то это известная особенность Windows: он показывает только размер страниц, активных в последнее время. Это часто бывает около 50%, тогда как по факту память зарезервирована приложениями на 100%+. Надо смотреть активность жесткого диска: если постоянно пишутся данные, значит, память перегружена и идет сброс данных в пейджфайл на каждый чих.


  • 0

#7 checo

checo

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

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 20 сентября 2017 - 10:18

Можно ли развернуть jmeter на том же сервере где и развернуто веб приложение? Или в таком случае я буду получать некорректные данные?

Да, будут некорректные данные.


  • 0

#8 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 20 сентября 2017 - 14:04

60000 пользователей в день, не одновременно.
Нагружающий сервер и нагружаемая система должны стоять в одной стойке, а не так, что сервис в амазоне а jmeter в офисе на ноуте через вайфай.
1000 тредов на машину ЕМНИП для jmeter много. Ну и сразу вопрос, что за машина? и детали загрузки, как описал Spock

1. Я понимаю что 60000 это не одновременно, вот и просят узнать сколько на данный момент выдержит одновременно.
2. На данный момент так и получается что система развернута на тестовом сервере, а нагрузка делается на рабочем, не особо мощном, ноуте (4-х ядерном cor-i3, 8GB ОЗУ), правда не через вайфай. Можно ли развернуть jmeter на том же сервере где и развернуто веб приложение? Или в таком случае я буду получать некорректные данные? И если 1000 тредов на машину много как сделать нагрузку приложения чтоб оно упало?

1. В этом месте надо понимать, что вы тестируете сервис установленный на конкретный сервер с конкретным железом, ОС, настройками. я видел случаи, кода тюнингом сетевого стека производительность сервиса поднималась в разы.
2. i3 - это обычно 2 ядра/ 4 потока. использовать для генерации нагрузки ноут - не самая лучшая идея. И вопрос, тестовый сервер где? если в стойке в соседней комнате, то включаете ноут в тот-же свич и в каких-то пределах можете давать нагрузку. Если сервер где-то "за интернетом", то нагружаете вы интернет и свое сетевое оборудование.
  • 0

#9 ievgen

ievgen

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

  • Members
  • Pip
  • 4 сообщений

Отправлено 20 сентября 2017 - 15:05

 

 

60000 пользователей в день, не одновременно.
Нагружающий сервер и нагружаемая система должны стоять в одной стойке, а не так, что сервис в амазоне а jmeter в офисе на ноуте через вайфай.
1000 тредов на машину ЕМНИП для jmeter много. Ну и сразу вопрос, что за машина? и детали загрузки, как описал Spock

1. Я понимаю что 60000 это не одновременно, вот и просят узнать сколько на данный момент выдержит одновременно.
2. На данный момент так и получается что система развернута на тестовом сервере, а нагрузка делается на рабочем, не особо мощном, ноуте (4-х ядерном cor-i3, 8GB ОЗУ), правда не через вайфай. Можно ли развернуть jmeter на том же сервере где и развернуто веб приложение? Или в таком случае я буду получать некорректные данные? И если 1000 тредов на машину много как сделать нагрузку приложения чтоб оно упало?

 

1. В этом месте надо понимать, что вы тестируете сервис установленный на конкретный сервер с конкретным железом, ОС, настройками. я видел случаи, кода тюнингом сетевого стека производительность сервиса поднималась в разы.
2. i3 - это обычно 2 ядра/ 4 потока. использовать для генерации нагрузки ноут - не самая лучшая идея. И вопрос, тестовый сервер где? если в стойке в соседней комнате, то включаете ноут в тот-же свич и в каких-то пределах можете давать нагрузку. Если сервер где-то "за интернетом", то нагружаете вы интернет и свое сетевое оборудование.

 

Сервер на котором тестируем, такой же как и на продакшене, он не в соседней комнате но в одной сети, как тогда быть ? Нужно делать распределенное тестирование, и все машины на которых будет развернут jmeter должны быть в одной сети ? 


  • 0

#10 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 20 сентября 2017 - 15:23

Одна сеть - я имею ввиду физическая, идеально - в одном свиче. Причем свич - не soho. что-нибудь приличное.
  • 1

#11 horhe

horhe

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

  • Members
  • PipPip
  • 100 сообщений
  • ФИО:Юрко
  • Город:Kraków

Отправлено 20 сентября 2017 - 15:26

Я бы для начала использовал Stepping Thread Group для постепенного увеличения нагрузки на N пользователей на через каждых M минут, чтобы дать пройти переходным процессам при изменнеии нагрузки и устаканиться в каком-то режиме работы. Как уже писали ранее, вполне может получится, что вы своей 1000 тредов просто убиваете или нагружаемое или JMeter. Не факт что одного инстанса хватит для генерации такой нагрузки. 
Для нормальной работы распределенных JMeter-ов хорошо бы их в пределах одной подсети разместить. 


  • 0
Piobaireachd isn't mysterious, difficult or hard - it's just music...


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

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