Проблемы производительности EC2 ELB - PullRequest
6 голосов
/ 10 февраля 2012

Два вопроса о EC2 ELB:

Во-первых, как правильно запустить тесты JMeter. Я обнаружил следующее http://osdir.com/ml/jmeter-user.jakarta.apache.org/2010-04/msg00203.html,, которое в основном говорит установить -Dsun.net.inetaddr.ttl = 0 при запуске JMeter (что легко), и второй момент, который он делает, заключается в том, что маршрутизация на ip не на запрос. Так что, кроме запуска фермы jmeter, я не вижу, как это обойти. Любые идеи приветствуются, или, возможно, я неправильно читаю объяснение (?)

Кроме того, у меня есть веб-сервис, который выполняет вызов на стороне сервера другому веб-сервису в java (и оба за ELB), поэтому я использую HttpClient и его MultiThreadedHttpConnectionManager, где я предоставляю несколько маршрутов большого размера для размещения значение в диспетчере соединений. И мне интересно, не нарушит ли это поведение балансировки нагрузки ELB, потому что соединения кэшируются (а также, что все запросы происходят с одной и той же машины). Я могу переключаться на использование нового HttpClient каждый раз (что-то не так), но это не обходит стороной тот факт, что все запросы исходят от небольшого числа хостов.

Предыстория: я нахожусь в процессе тестирования службы с использованием ELB на EC2, и трафик распределяется неравномерно (большая часть трафика на 1-2 узла, почти нет трафика на 1 узел, вообще нет трафика на 4-й узел). Итак, вышеупомянутые проблемы - это возможные виновники, которых я выявил.

Ответы [ 2 ]

1 голос
/ 24 апреля 2016

Вы не говорите, сколько экземпляров jmeter вы используете, но, по моему опыту, это должно быть примерно в 2 раза больше числа AZ, которые вы масштабируете. Даже в этом случае вы, вероятно, увидите несбалансированные нагрузки - очень необычно видеть, что нагрузка точно распределена по всему вашему внутреннему парку.

Вы можете помочь (немного), запустив экземпляры jmeter в разных регионах.

Другим фактором является продолжительность вашего теста. ELBs занимают некоторое время, чтобы масштабироваться - обычно вы можете сказать, сколько экземпляров запущено, выполнив nslookup для имени ELB. Поймите свои схемы масштабирования и постройте тесты вокруг них. (Поэтому, если для добавления другого экземпляра в пул ELB требуется 20 минут, включите 25-30-минутный прогрев теста.) Вы также получаете AWS для «предварительного прогрева» пула ELB при необходимости.

Если размер вашего пула ELB достаточен для вашего теста и может убедиться, что пул не изменяется во время тестового прогона, вы всегда можете попробовать запустить тесты непосредственно с IP-адресами ELB, то есть вручную сбалансировать трафик.

Я не уверен, что вы ожидаете, что произойдет со вторым уровнем вызовов - если вы открываете соединение и используете его повторно, то, очевидно, нет способа масштабировать его между экземплярами без закрытия и повторного открытия. связь. Эти вызовы выполняются на одном и том же наборе серверов или на другом наборе? Вы можете создать внутренний ELB и использовать эту конечную точку для подключения, но я не уверен, что это поможет в сценарии, который вы описали.

1 голос
/ 11 февраля 2012

У меня были очень похожие проблемы.Во-первых, ELB плохо масштабируется при взрывной нагрузке.Поэтому, когда вы пытаетесь проверить это, оно не увеличивается сразу.Это займет много времени, чтобы продвинуться.Другим недостатком является тот факт, что он использует CNAME при поиске DNS.Это само по себе замедлит вас.Есть и другие проблемы с производительностью, которые вы можете исследовать.

Я рекомендую использовать haproxy.У вас гораздо больше контроля, и вам понравится представление.Я был очень счастлив с этим.Я использую heartbeat для настройки резервного сервера, и я готов к работе.

Также, если вы планируете использовать SSL с ELB, вы будете страдать больше, потому что я обнаружил, что производительность ниже номинальной.

Надеюсь, это поможет некоторым.Когда дело доходит до этого, AWS лично сказал мне, что нагрузочное тестирование ELB на самом деле не работает, и если вы планируете запуск с большой нагрузкой, вы должны сообщить им, чтобы они могли масштабировать вас заранее.

...