Саранча - Скорость вылупления - EC2

Я использую locust для нагрузочного тестирования приложения. Я написал и протестировал сценарий в своей локальной системе ubuntu, и все прошло хорошо.

Я создал экземпляр EC2, используя образ Amazon Linux, и после настройки ограничений для файлов в файле /etc/security/limits.conf я загрузил locust, и все прошло нормально для небольшого теста (простой тест GET, просто чтобы проверить сантехнику , 2000 пользователей, 20 выводов).

Однако, когда я загрузил более крупный тест, 8000 пользователей 40 коэффициентов вывода, я заметил, что где-то около 3000 или 4000 пользователей коэффициент вывода, похоже, замедлился, просто добавляя 4-5, а не 40 новых «пользователей» за раз. Так что, чтобы достичь 8000, потребовалось много времени. Ожидается ли это поведение, если нет, есть ли какое-нибудь представление о том, в чем может быть проблема?


person eezis    schedule 15.09.2016    source источник


Ответы (1)


То, что Locust называет «пользователями», на самом деле является набором задач, порожденным gevent. Это означает, что вы создаете тысячи событий в одном процессе Python, что означает большие накладные расходы на управление этими событиями.

Если вы хотите создать тысячи наборов задач, я бы рекомендовал запустить Locust в распределенном режим. Вы можете иметь много ведомых устройств, работающих на одном оборудовании, или распределить свои ведомые устройства по множеству экземпляров. Google написал отличную статью и открыл исходный код некоторых контейнеров Kubernetes именно для этой цели. Мы написали наш собственный контейнер Docker с Alpine и сильно модифицированным Locust, наше соотношение подчиненных устройств к TaskSets в итоге составило 1: 100. Соотношение ведомых устройств к экземплярам сильно зависит от того, какой размер экземпляра вы получите.

person Jason Pearson    schedule 20.10.2016