Поскольку все должно быть https, я включил его и заметил, насколько медленнее https по сравнению с http.
У меня есть сервер Ubuntu/YAWS в Далласе. Я запускаю YAWS с помощью "yaws --daemon --nodebug"
If I do
время curl -i https://share.spreadsheetconverter.com/echo/
и
время curl -i http://share.spreadsheetconverter.com/echo/
от самого сервера https занимает около 100мс а http 20мс, т.е. разница 80мс.
Когда мы пытаемся из Швеции, Европы, https составляет 1400 мс, а http — 350 мс. Эти цифры могут быть логичными из-за задержки над Атлантикой.
Однако теперь к странному.
У меня также есть сервер Windows/IIS в Далласе.
Если я сравниваю простой запрос http-get на обоих серверах, разница https-штрафа для сервера YAWS намного больше, чем для IIS. (Я также тестировал Tomcat, и он ведет себя аналогично IIS).
Это также, по-видимому, зависит от задержки, т. Е. Чем дольше вы находитесь от сервера, тем больше разница между IIS и YAWS.
Когда я провожу аналогичные тесты с сервером IIS в Далласе, Швеция, https составляет 1000 мс, а http такой же, как и для YAWS, т. е. IIS намного быстрее (400 мс) на https, чем Yaws. Как будто YAWS делает дополнительный сетевой вызов.
Я также экспериментировал с
и только что извлек время SSL, о котором они сообщили. Обратите внимание, что время SSL увеличивается быстрее для YAWS.
| YAWS | IIS
Dallas | 79ms | 75ms
New York | 212ms | 87ms
Amsterdam | 503ms | 315ms
Хорошо, что мне делать?
- Есть ли ошибка в моей настройке YAWS?
- Решит ли проблему размещение NGINX перед YAWS и позволит ли Nginx обрабатывать https?
- Есть ли ошибка в моем SSL-сертификате? Могут ли они быть быстрее или медленнее? Я проверил с помощью https://www.ssllabs.com/ssltest/analyze.html.
Обновление 20 августа 2015 г.
Я обновился до yaws 2.0, и да, разница в производительности осталась.
Используя
curl -v --trace-time --trace-ascii echo.log https://share.spreadsheetconverter.com/echo/
и сравнивая его с
curl -v --trace-time --trace-ascii server1.log https://www.spreadsheetserver.com/server1/
Я сравнил все строки, я вижу, что мы теряем 300 мс в одной строке.
Вот как это выглядит, когда мы говорим с Yaws 2.0
17:37:54.606668 == Info: TLSv1.2, TLS handshake, Finished (20):
17:37:54.606692 => Send SSL data, 16 bytes (0x10)
0000: ......Jb.9...#.^
17:37:54.758726 == Info: TLSv1.2, TLS change cipher, Client hello (1):
17:37:54.758761 <= Recv SSL data, 1 bytes (0x1)
0000: .
17:37:55.107695 == Info: TLSv1.2, TLS handshake, Finished (20):
17:37:55.107726 <= Recv SSL data, 16 bytes (0x10)
0000: ..........Y.xV.!
17:37:55.107784 == Info: SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA
и это, когда я разговариваю с IIS
17:40:25.247308 == Info: TLSv1.0, TLS handshake, Finished (20):
17:40:25.247329 => Send SSL data, 16 bytes (0x10)
0000: ........f4..qh:(
17:40:25.376893 == Info: TLSv1.0, TLS change cipher, Client hello (1):
17:40:25.376925 <= Recv SSL data, 1 bytes (0x1)
0000: .
17:40:25.377081 == Info: TLSv1.0, TLS handshake, Finished (20):
17:40:25.377103 <= Recv SSL data, 16 bytes (0x10)
0000: ....C..'.A,..'R.
17:40:25.377142 == Info: SSL connection using TLSv1.0 / AES128-SHA
И для Yaws, и для IIS первая «Отправка данных SSL» занимает 150 мс.
Для IIS два немедленных «Recv SSL data» следуют без задержки.
Однако в случае с Yaws нам нужно ждать 350 мс для получения первых данных «Recv SSL», а затем немедленно
Это как что-то асинхронное в IIS, но синхронизированное в Yaws. В IIS данные, которые нужно получить, объединяются с подтверждением отправки, но в Yaws это два отдельных запроса.
Все эти запросы должны пройти через Атлантический океан. Если вместо этого я сделаю это с одним и тем же центром обработки данных, различия будут намного меньше.
Identity Authentication
одинаково для разных веб-серверов? В Yaws это опцияverify
в разделе ssl. Включение аутентификации на обоих концах вызовет больше пакетов во время рукопожатия. - person johlo   schedule 31.01.2015