Меня попросили настроить новый оптимизированный сервер плиток, который предоставляет плитки по 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 секунды до просмотра первого байта ..