Назад | Перейти на главную страницу

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 (национальной широкополосной сети) со скоростью 100 Мбит / с, тот же запрос ab -n 3 к существующему серверу дает среднее 867 мс. Но новый сервер возвращает плитки в среднем 1562 мс.

Клиент сообщил об аналогичных 1-2-секундных ответах на ADSL-соединение в Австралии, но это цифры, полученные с помощью инструментов разработчика Chrome, а не теста ab.

Что может привести к ухудшению HTTPS поверх HTTP2 по сравнению с HTTP?

Обновить

Я настроил nginx для регистрации протокола запросов, и похоже, что ab фактически выполняет запросы с HTTP / 1.0. Итак, мы переосмыслили, какой тестовый клиент использовать.

У меня есть настройка h2load для использования http2 для выполнения 70 одновременных запросов с:

h2load -t2 -c 70 -n 70 -i urls.

На сервере в той же инфраструктуре я вижу:

                     min         max         mean         sd        +/- sd
time for request:     2.62ms     15.40ms      7.11ms      3.12ms    72.86%
time for connect:    14.94ms     68.85ms     44.32ms     17.95ms    52.86%
time to 1st byte:    20.90ms     71.60ms     51.43ms     16.79ms    50.00%
req/s           :      13.95       47.65       22.20        8.99    85.71% 

На машине Ubuntu, подключенной к NBN, я вижу:

                     min         max         mean         sd        +/- sd
time for request:   556.58ms    599.88ms    578.16ms      8.85ms    68.57%
time for connect:   840.90ms    926.45ms    886.62ms     21.09ms    61.43%
time to 1st byte:      1.40s       1.53s       1.46s     29.87ms    61.43%
req/s           :       0.66        0.72        0.68        0.01    61.43%

Итак, в среднем 1,5 секунды до просмотра первого байта ..