Проблемы с производительностью Http2 против Http1.1 - PullRequest
0 голосов
/ 19 февраля 2020

Я обновился до HTTP2 с http1.1 для приложения tomcat9. После этого обновления я вижу, что производительность остальных API-интерфейсов низкая. Я запустил нагрузочный тест для 1000 выборок, и в результате HTTP1.1 имеет лучшую пропускную способность и среднее время отклика, однако я ожидал, что он будет для HTTP2. Я что-то пропустил?

PS: Тип содержимого ответа - тип приложения / json.

1 Ответ

3 голосов
/ 19 февраля 2020

Вы сравниваете HTTP / 1.1 без HTTPS с HTTP / 2 с HTTPS. Это не настоящее сравнение одних только протоколов, поскольку HTTPS имеет значительные издержки - особенно для одного соединения.

Да, это правда, что HTTP / 2 обычно требует HTTPS, поскольку ни один браузер не поддерживает HTTP / 2 без HTTPS, но опять же браузеры все больше нагреваются против незащищенных HTTP-соединений и ограничивающих функций, таких как HTTP / 2, Brotli, Service Workers, Geo ... et c. к HTTPS в любом случае.

HTTP / 2 через HTTPS может обыграть HTTP / 1.1 по HTTP в определенных обстоятельствах, но в целом это чертовски неприятный шаг для начала .

Кроме того, при выполнении только одного запроса на соединение (, как вы используете jMeter с использованием потоков ), затраты на HTTPS будут составлять большой процент соединения из-за установления связи HTTPS, которое необходимо случиться, чтобы установить соединение. Будущие запросы по тому же соединению не будут иметь таких затрат, как в общем случае часть шифрования / дешифрования является относительно быстрой на современном оборудовании и поэтому не создает заметной задержки - но часть начальной настройки определенно делает.

* 1014 Наконец, HTTP / 2, как правило, быстрее, чем HTTP / 1.1, по более медленным соединениям с высокой задержкой, в значительной степени из-за мультиплексирования . Если вы проводите тестирование в той же сети, что, как я подозреваю, вы можете делать, когда нет практически никаких сетевых задержек, то преимущество HTTP / 2 по сравнению с HTTP / 1.1 может быть неочевидным.
...