- PVSM.RU - https://www.pvsm.ru -
Ещё раз привет!
У меня появилась шикарная задача для исследования, и своими результатами я хочу поделиться с сообществом. Смысл задачи состоит в том, чтоб определить лучший вариант деплоя NGINX в AWS EC2/VPC. Лучший он должен быть с многих сторон, особенно со стороны высоконадёжности (High Availability) и скорости ответа. Особенно важным фактором так же является быстрота обработки SSL запросов, поэтому были проведены тесты на SLL-производительность.
Все инстансы находятся в одной сети VPC, ELB тоже поднимается в этой же сети.
Было рассмотрено несколько вариаций деплоймента, но выбор пал на 2 основные конфигурации, тесты над которыми я и провёл.

Преимущества:
Недостатки:

Приимущества:
Недостатки:
Тестирование проходило на m1.medium инстансах (3.75 GiB memory, 2 EC2 Compute Unit (1 virtual core with 2 EC2 Compute Unit)). В качестве веб сервера использовался nginx с дефолтной страничкой. Тест проводился из другого региона AWS с помощью Apache Bench: 6 конкурентных пользователей спрашивали 400 раз страничку. Тест повторялся 100 раз в каждом случае.
Итак, было проведено 4 теста. Обе конфигурации отвечали на http и https запросы.
Тесты направлены на выявления влияния ELB на скорость ответа структуры. Предполагается, что конфигурации с ELB будет медленнее отзываться, т.к. в сети присутствует дополнительный узел. Но так же требуется взять во внимание то, что за ELB может быть больше одного (в нашем случае 2) инстанса NGINX, которые могут быть производительнее одного.
Средний результат всех ответов (в мс):
ELB: 209.586
NGINX: 207.934
Как видим, результаты практически не отличаются. Хотя и на графике конфигурация NGINX постоянно быстрее ELB, но разница в 1-2% абсолютно приемлема. И так как конфигурация ELB значительно легче в настройке, более стабильна и имеет практически то же время ответа, что и NGINX, мы можем отдать ей предпочтение.
Тесты направлены на выяснения производительности конфигураций относительно SSL шифрования. В конфигурации ELB SSL шифрование производит ELB, в конфигурации NGINX — один NGINX балансировщик.

Средний результат всех ответов (в мс):
ELB: 455.921
NGINX: 437.745
В начале тестирования ELB значительно отставал в ответах. Но после 30го запроса мы видим прирост в производительности. Это обосновано тем, что ELB был вертикально масштабирован. После повышения вычислительных мощностей, производительность стала почти одинаковой, как видно по графику.
Как известно, ELB — это m1.micro инстанс, который может быть вертикально масштабирован, если он не справляется с задачами. Это никак не контролируется и производится автоматически. Но, благодаря партнёрским отношениям с AWS, можно добиться установки минимального шейпа для ELB, и, например, ELB никогда не будет меньше m1.medium. Делается это для того, чтоб максимально ускорить работу инфраструктуры. Если воспользоваться этой энтерпрайз опцией, то выбор места для SSL шифрования зависит от простоты настройки и других факторов. Пока эти вопросы не рассматривались, но результаты тестов показали, что обе конфигурации приблизительно равнозначны.
Были проведены тесты производительности конфигураций с и без использования ELB в AWS EC2/VPC. Показатели говорят о том, что присутствие ELB очень незначительно влияет на время отклика, хотя тем самым облегчает настройку высокодоступных решений. Так же, с использованием дополнительных опций AWS, особо не важно в каком месте проводить обработку SSL. В других же случаях, с достаточными мощностями (как минимум не m1.micro), её стоит проводить не на ELB.
Если у вас есть другие интересные идеи о том, как сравнить эти конфигурации, я открыт для них. Сейчас всё бежит и можно легко прогнать ещё несколько тестов.
Автор: korjik
Источник [1]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/nginx/19087
Ссылки в тексте:
[1] Источник: http://habrahabr.ru/post/157425/
Нажмите здесь для печати.