HTTPS/HTTP2 медленнее по сети, но быстрее локально
Меня попросили настроить новый, оптимизированный сервер плиток, который предоставляет плитки по HTTPS (Google отключил некоторые API-интерфейсы карты, когда страница не HTTPS), и было также правильно использовать HTTP2.
Существующим сервером был Apache 2.4.7 с mod_python, на котором работало TileStache (приложение Python) для обслуживания листов. Новый сервер - Nginx 1.11.3, сконфигурированный с SSL и HTTP2, и использующий uwsgi 2.0.12 для запуска TileStache с той же конфигурацией TileStache.
Однако клиент сообщил, что производительность нового сервера в Австралии ниже, чем у существующего сервера.
При тестировании производительности загрузки листов локально с использованием Apache ab, существующий сервер и новый сервер находятся в США, а с отдельного сервера в той же инфраструктуре существующий сервер Apache предоставляет отдельные листы в среднем 131 мс на три запроса. Новый сервер Nginx обеспечивает отдельные плитки в среднем 115 мс на три запроса.
На машине с Ubuntu 14.04, подключенной к высокоскоростной сети NBN Австралии (10000 Мбит / с), тот же самый ab -n 3-запрос к существующему серверу дает в среднем 867 мс. Но новый сервер возвращает плитки в среднем 1562 мс.
Клиент сообщил об аналогичных 1-2-секундных ответах на ADSL-соединение в Австралии, но это были данные из инструментов Chrome dev, а не ab-теста.
Что может привести к ухудшению HTTPS через HTTP2 по сравнению с HTTP?
Обновить
Я настроил nginx для регистрации протокола запросов, и ab, кажется, фактически делает запросы с HTTP/1.0. Итак, переосмысливая, какой тестовый клиент использовать.
Я настроил h2load для использования http2 для выполнения 70 одновременных запросов с:
h2load -t2 -c 70 -n 70 -i urls
,
На сервере в той же инфраструктуре я вижу:
мин макс значит сд +/- сд время запроса: 2,62 мс 15,40 мс 7,11 мс 3,12 мс 72,86% время соединения: 14,94 мс 68,85 мс 44,32 мс 17,95 мс 52,86% время до 1-го байта: 20,90 мс 71,60 мс 51,43 мс 16,79 мс 50,00% требование: 13,95 47,65 22,20 8,99 85,71%
На машине с Ubuntu, подключенной к NBN, я вижу:
мин макс значит сд +/- сд время запроса: 556,58 мс 599,88 мс 578,16 мс 8,85 мс 68,57% время соединения: 840,90 мс 926,45 мс 886,62 мс 21,09 мс 61,43% время до 1-го байта: 1,40 с 1,53 с 1,46 с 29,87 мс 61,43% Рек / с: 0,66 0,72 0,68 0,01 61,43%
Итак, в среднем 1,5 секунды, прежде чем увидеть первый байт..