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

медленный сервер SSL apache

У меня проблема с медленным сервером Apache с сертификатом SSL 256bit

ab -n 500 https://example.com/
Time per request 29 ms

ab -n 500 http://example.com/
Time per request 10 ms

В обоих запросах отправляется 52 байта, и тесты проводятся с сервера в том же центре обработки данных.

conf

SSLEngine on
SSLProtocol All -SSLv2
SSLHonorCipherOrder On
SSLCipherSuite ALL:!ADH:!EXP:!LOW:!RC2:!3DES:!SEED:!RC4:+HIGH:+MEDIUM

Это нормально, что SSL в 3 раза медленнее обычных HTTP-запросов?

Как вы тестировали свой сервер? Какое приложение работает за вашим HTTPS-сервером? Какой процессор использует ваш сервер? Как видите, в вашем вопросе не хватает многих важных деталей ...

В любом случае, SSL определенно несколько медленнее, чем «чистый» HTTP: криптография с открытым ключом намного медленнее, чем с симметричным ключом, и это та самая причина, по которой pubkey используется только для обмена частным симметричным ключом и каналом, который переключается на симметричный ключ крипто.

Вы должны понимать разницу между тем, что ab делает и что делает браузер. (Я не буду отвечать, что ab делает, потому что я недостаточно знаком с ним).

Например:

  1. Является ab используете повторное использование сеанса TLS? Браузер будет работать и будет работать намного быстрее из-за этого (для последующих запросов). Вы можете проверить это с помощью wirehark (возможно, https://ask.wireshark.org/questions/9007/ssl-session-reuse является полезным)
  2. Является ab с использованием заведомо медленных шифров (вы можете увидеть, какой шифр согласовывается в ssl_request_log)
  3. Поддерживаете ли вы HTTP keep-alive для HTTPS-соединения? Вы должны это сделать, хотя бы достаточно долго, чтобы вытащить все ресурсы на странице. Это действительно сократит количество запросов SSL / TLS к серверу.
  4. Есть ли на вашем сайте дружественный к кешу контент (особенно для кеша браузеров) - используете ли вы такие заголовки ответов, как Cache-Control: public, max-age=3600, s-max-age=3600.

Если вы сконцентрируетесь на них, то легко и быстро сможете заставить сайт, поддерживающий только HTTPS, работать нормально. Это то, что я делаю для сайта потокового видео, который (по сути) только HTTPS, и мне не нужно было беспокоиться о времени соединения SSL.

HTTPS медленнее, потому что у него больше данных для обмена (сертификат X.509 с сервера), у него есть безопасное соединение для передачи данных для настройки, ...

ab может дать время «Подключиться», и именно здесь вы увидите разницу во времени. Настройка TLS занимает больше времени, чем отсутствие настройки.

Да, это нормально, что HTTPS устанавливает соединение примерно в 3 раза медленнее, чем HTTP. Вот это приятно читать, объясняя почему.

Причины замедления работы сайта:

  • Сертификаты SSL содержат несколько промежуточных сертификатов, которые увеличивают объем данных во время рукопожатия.

  • Производительность OCSP и CRL также не исправляется, поскольку веб-сайту требуется 1/3 секунды для ответа на запрос OCSP и установления соединения.

Рекомендации для быстрых HTTPS-соединений:

  • Использование ресурсов ЦП можно уменьшить за счет сжатия текстового содержимого или обновления текущего процесса для обработки задачи шифрования.

  • Вам необходимо убедиться, что все на странице загружается через HTTPS.

  • Воспользоваться помощью SPDY - сетевой протокол Google с открытым исходным кодом, минимизирующий время загрузки веб-страницы.

  • На стороне центра сертификации центры сертификации могут уменьшить время отклика OCSP и CRL от 300 мс до 100 мс (миллисекунды).

  • Центр сертификации может уменьшить размер промежуточной цепочки в сертификатах SSL, поскольку потребляет дополнительные байты и время.