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

Фотография

JMeter и AWS Elastic Load Balance


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

#1 _eugene_

_eugene_

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

  • Members
  • Pip
  • 26 сообщений
  • Город:Томск


Отправлено 27 декабря 2016 - 03:15

Добрый день. 

 

Требовалась написать тест-план для нагрузочного тестирования чат-сервера. 

 

Серверная структура размещена на сервисе AWS. Постоянно подняты 2-ва инстанса чат-сервера. Так же настроены условия при которых поднимается новый инстанс в зависимости от подаваемой нагрузки на серверную часть.  

 

Между инстансами AWS Elastic Load Balance распределяет нагрузку. 

 

=======

При тестировании выявилось что подаваемая нагрузка не распределяется между серверами, и примерно выглядит ситуация следующим образом:

1ый инстанс -> грузится на 90% cpu

2ой инстанс -> грузится на 20% cpu

 

Выяснил, что AWS распределяет нагрузку только если долбится с разных IP адресов. Для этого в тест план был добавлен DNS Cash Manager.

 

При повторном тестировании распределяется, но распределяется не совсем равномерно:

1ый инстанс -> грузится на 70% - 80% cpu

2ой инстанс -> грузится на 30% - 40% cpu

 

Так же запускал Jmeter с параметром "-Dsun.net.inetaddr.ttl=0"

И прописывал в файл system.properties дополнительные параметры:

networkaddress.cache.ttl=0

sun.net.inetaddr.ttl=0

 

 

Кто сталкивался с проблемой не равномерной подачи нагрузки на распределенные системы?

Как решали проблему с AWS Elastic Load Balance?

 

p.s. гуглить я умею, так что не надо кидать простые ссылки, а желательно высказывать свои мысли :) 

=======

 

Тест план выглядит следующим образом:

 

- User Defined Variables

- Load_Performance_Chat_Thread => number of thread - задается переменно постоянной и задается 100 потоков / Loop Count - forever

      -- CSV Data Set Config - файл с токенами авторизации пользоватлей (в списке 100 пользоватлей)

      -- DNS Cache Manager - указаны DNS 8.8.8.8 / 77.88.8.8

      -- Requests / Join -> web socket - конектимся к сокету

      -- While Controller - пока есть подключение по сокету отправляем в чат сообщения

            -- Requests / New messege -  web socket

      -- Requests / Leave -> закрываем конек к web socket

- Constant Throughput Timer

 

 

  • 0

#2 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

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

Добрый день. 

 

Требовалась написать тест-план для нагрузочного тестирования чат-сервера. 

 

Серверная структура размещена на сервисе AWS. Постоянно подняты 2-ва инстанса чат-сервера. Так же настроены условия при которых поднимается новый инстанс в зависимости от подаваемой нагрузки на серверную часть.  

 

Между инстансами AWS Elastic Load Balance распределяет нагрузку. 

 

=======

При тестировании выявилось что подаваемая нагрузка не распределяется между серверами, и примерно выглядит ситуация следующим образом:

1ый инстанс -> грузится на 90% cpu

2ой инстанс -> грузится на 20% cpu

 

Выяснил, что AWS распределяет нагрузку только если долбится с разных IP адресов. Для этого в тест план был добавлен DNS Cash Manager.

 

При повторном тестировании распределяется, но распределяется не совсем равномерно:

1ый инстанс -> грузится на 70% - 80% cpu

2ой инстанс -> грузится на 30% - 40% cpu

 

Так же запускал Jmeter с параметром "-Dsun.net.inetaddr.ttl=0"

И прописывал в файл system.properties дополнительные параметры:

networkaddress.cache.ttl=0

sun.net.inetaddr.ttl=0

 

 

Кто сталкивался с проблемой не равномерной подачи нагрузки на распределенные системы?

Как решали проблему с AWS Elastic Load Balance?

 

p.s. гуглить я умею, так что не надо кидать простые ссылки, а желательно высказывать свои мысли :) 

=======

 

Тест план выглядит следующим образом:

 

- User Defined Variables

- Load_Performance_Chat_Thread => number of thread - задается переменно постоянной и задается 100 потоков / Loop Count - forever

      -- CSV Data Set Config - файл с токенами авторизации пользоватлей (в списке 100 пользоватлей)

      -- DNS Cache Manager - указаны DNS 8.8.8.8 / 77.88.8.8

      -- Requests / Join -> web socket - конектимся к сокету

      -- While Controller - пока есть подключение по сокету отправляем в чат сообщения

            -- Requests / New messege -  web socket

      -- Requests / Leave -> закрываем конек к web socket

- Constant Throughput Timer

 

ИМХО, лучше всего было бы для целей тестирования научить balancer раскидывать не на основании ip, а на основании сессии, если это возможно.

Иначе - посмотреть логи, если во время теста используются разные IP, то дело, вероятно, все-таки не в тестах.

Возможно, что 100 пользователей слишком малая нагрузка, чтобы балансер начал раскидывать точно в пропорциях 50/50


  • 0

#3 Little_CJIOH

Little_CJIOH

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

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


Отправлено 27 декабря 2016 - 10:04

А вы уверены, что вам нужно тестировать AWS Load Balancer?
  • 0

#4 Spock

Spock

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

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

Отправлено 27 декабря 2016 - 10:41

 

1ый инстанс -> грузится на 70% - 80% cpu

2ой инстанс -> грузится на 30% - 40% cpu

по-моему неплохо балансирует, это вряд ли можно назвать "проблемой"

 

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

 

 

 

А вы уверены, что вам нужно тестировать AWS Load Balancer? 

да тут вроде система тестируется в целом, включая балансер


  • 0

#5 _eugene_

_eugene_

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

  • Members
  • Pip
  • 26 сообщений
  • Город:Томск


Отправлено 27 декабря 2016 - 17:13

 

 

1ый инстанс -> грузится на 70% - 80% cpu

2ой инстанс -> грузится на 30% - 40% cpu

по-моему неплохо балансирует, это вряд ли можно назвать "проблемой"

 

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

 

 

 

А вы уверены, что вам нужно тестировать AWS Load Balancer? 

да тут вроде система тестируется в целом, включая балансер

 

 

​Если увеличить нагрузку то срабатывает механизм скейлинга, и подымается 3-ий инстанс, и получается так, что:

1ый инстанс => грузится на 60 - 70%

2ой инстанс => грузится на 30%

 

3ий инстанс => грузится на 30%

 

Да, все верно, тестируется не AWS Load Balancer, а все система целиком.


  • 0

#6 Spock

Spock

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

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

Отправлено 27 декабря 2016 - 17:14

Ну тогда отключаем скейлинг и смотрим как балансит увеличивая нагрузку
  • 0


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

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