Как я могу оптимизировать сеанс SSL, чтобы я мог использовать его позже (при необходимости) для повышения производительности Client Server - PullRequest
1 голос
/ 17 марта 2011

У меня есть сервер, работающий в Windows Azure , здесь с большим ключом (ссылка предназначена для демонстрации большого ключа в SSL-сертификате). Основываясь на этом диалоге Security.SE больший ключ будет более дорогим в установке и удалении с точки зрения ЦП.

Предполагается, что я использую клиент .NET и сервер .NET; какие изменения я должен сделать (если таковые имеются), чтобы уменьшить накладные расходы на подключение / отключение перспективы SSL.

Для целей этого разговора давайте включим эти сценарии (добавьте больше, если вы можете думать о них)

  • Веб-браузер для IIS
  • клиент WCF для сервера WCF (IIS)
  • WCF-клиент для WCF TCP
  • От клиента на основе сокетов до сервера на основе сокетов

Ответы [ 2 ]

5 голосов
/ 21 марта 2011

Стоимость начального рукопожатия в основном фиксированная (с учетом определенных параметров). Стоимость возобновленного рукопожатия примерно равна нулю.

Способ повышения производительности заключается в увеличении количества сеансов, которые возобновляются, а не начальных сеансов. Это амортизирует стоимость начального рукопожатия через возобновленные рукопожатия, уменьшая среднюю стоимость рукопожатия.

Самый простой способ увеличить частоту возобновления рукопожатия - это увеличить размер / тайм-аут кэша сеанса. Конечно, наличие большого кэша сеанса может создавать свои собственные проблемы с производительностью. Нужно найти хороший баланс между этими двумя, и лучший способ сделать это с помощью тестирования.

2 голосов
/ 22 марта 2011

Если приложение создано для поддержания открытых соединений WCF, возможно, имеет смысл включить KeepAlive (по умолчанию оно отключено).

Соединение TCP будет автоматически повторно использоваться при переключении keep-aliveвключенДля диспетчера ServicePoint вы можете использовать метод SetTcpKeepAlive, чтобы включить опцию keep-alive для соединения TCP.Обратитесь к следующей статье MSDN:

Метод ServicePointManager.SetTcpKeepAlive http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.settcpkeepalive.aspx

От Microsoft:

Как правило, с точки зрения производительности, между обычным HTTP и HTTPS существует разницалежит в рукопожатии TCP-соединения.Для рукопожатия HTTPS требуется больше времени, чем для HTTP.Однако после установления TCP-соединения их различие становится очень тривиальным, поскольку в этом соединении будет использоваться блочный шифр.И разница между сертификатом «очень высокий бит» и обычным сертификатом более тривиальна.Мы имели дело с большим количеством случаев низкой производительности, но у нас редко бывают случаи, у которых проблема с низкой производительностью вызвана более сильным сертификатом, так как перегруженность сети, высокая загрузка ЦП, большая часть данных ViewState и т. Д. Являются основными персонажами.с низкой производительностью.

В перспективе IIS обратите внимание, что в диспетчере IIS для веб-сайта по умолчанию будет выбран параметр «Включить HTTP Keep-Alives».Эта опция гарантирует, что IIS и клиентский браузер будут поддерживать TCP-соединение на некоторое время для определенных HTTP-запросов.Другими словами, для обходов между сервером IIS и клиентом только первый запрос будет явно медленнее других, а остальные - нет.

enter image description here

Вы можете обратиться к следующей статье об этом параметре: http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/d7e13ea5-4350-497e-ba34-b25c0e9efd68.mspx?mfr=true

Конечно, я знаю, что для WCF IIS не обязателен для размещения приложений во многих сценариях, но в этом отношении, я думаю, они работают аналогично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...