Как повысить производительность SSL с помощью Elastic Beanstalk

Мне очень нравится Elastic Beanstalk, и мне удалось запустить и запустить мое веб-приложение (Spring MVC, Hibernate,...) с использованием SSL в 64-разрядном контейнере Tomcat7.

Меня больше всего беспокоит производительность (я думал, что здесь поможет использование облака Amazon).

Чтобы оценить производительность моего сервера, я использую blitz.io (который использует облако Amazon для одновременного доступа нескольких клиентов к моему веб-сервису).

Мой самый первый простой тест производительности уже заставил меня задуматься: я проверил URL-адрес проверки работоспособности (который в основном просто печатает «Я в порядке»).

Без SSL: выглядит нормально. 13 ударов/с при времени отклика 9 мс 230 ударов/с при времени отклика 8 мс

С SSL: не так хорошо. 13 обращений в секунду со временем отклика 44 мс (хорошо, это должно быть немного больше из-за накладных расходов на шифрование) 30 обращений в секунду со временем отклика 3,6 с!

Переход выше оставил меня с тайм-аутами соединения (тайм-аут = 10 с).

Я попытался использовать более крупный экземпляр EC2 в фоновом режиме, практически с тем же результатом.

Если я не ошибаюсь, балансировщик нагрузки перед инстансами EC2 служит конечной точкой для SSL-шифрования. Как увеличить эту производительность?

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

Я также провел несколько тестов с использованием Heroku (хотя и с немного другим стеком технологий, play! vs. SpringMVC). Здесь я также увидел увеличение времени отклика, но оно осталось в основном постоянным. Я предполагаю, что они используют довольно эффективные конечные точки SSL. Как мне получить это для Elastic Beanstalk?




Ответы (2)


Кажется, мой метод тестирования был ошибочным.

Эластичные балансировщики нагрузки Amazon, похоже, выполняют до 10 000 SSL-запросов в секунду.

См. эту замечательную статью: http://blog.mattheworiordan.com/post/24620577877/part-2-how-elastic-are-amazon-elastic-load-balancers

person David    schedule 23.07.2012

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

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

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

Так что за результаты я бы особо не переживал. Я предлагаю вам попробовать такой инструмент, как www.browsermob.com, чтобы увидеть, сколько времени требуется полной странице с большим количеством изображений, js, css и т. д. для загрузки через SSL по сравнению с не-SSL. Это будет честное сравнение.

Помогает?

person oazabir    schedule 09.07.2012
comment
Это касается не веб-страницы, а веб-службы, которая по существу обрабатывает загрузку изображений. Поэтому важно обрабатывать множество одновременных запросов, каждый из которых выполняет рукопожатие. - person David; 23.07.2012