lento servidor apache SSL

2

Eu tenho um problema com um servidor Apache lento com certificado SSL de 256 bits

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

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

52 bytes são enviados em ambas as solicitações e os testes são feitos em um servidor no mesmo datacenter

conf

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

É normal que o SSL seja 3 vezes mais lento do que solicitações HTTP simples?

    
por clarkk 21.05.2015 / 11:35

5 respostas

7

Como você fez o benchmark de seu servidor? Qual aplicativo está sendo executado por trás do seu servidor HTTPS? Qual CPU o seu servidor usa? Como você pode ver, sua pergunta não tem muitos detalhes importantes ...

De qualquer forma, o SSL certamente é um pouco mais lento que o HTTP "puro": a criptografia de chave pública é mais lenta que a de chave simétrica, e essa é a razão pela qual o pubkey é usado apenas para trocar uma chave privada simétrica e o canal muda para criptografia de chave simétrica.

    
por 23.05.2015 / 13:04
2

O HTTPS é mais lento porque tem mais dados para trocar (o certificado X.509 do servidor), tem uma conexão de dados segura para configurar, ...

ab pode dar o tempo "Conectar" e é aí que você verá a diferença de tempo. A configuração do TLS leva mais tempo do que nenhuma configuração.

    
por 27.05.2015 / 07:56
2

Você precisa perceber a diferença entre o que o ab faz e o que um navegador faz. (Eu não vou responder o que o ab faz, porque eu não estou familiarizado o suficiente com isso).

Por exemplo:

  1. O ab está usando a reutilização da sessão TLS? Um navegador funcionaria muito mais rápido por causa disso (para solicitações subsequentes). Você pode verificar isso com a wireshark (talvez o link seja útil)
  2. É ab usando cifras que são conhecidas como lentas (é possível ver qual cifra é negociada no ssl_request_log)
  3. Você está apoiando o HTTP keep-alive na conexão HTTPS? Você deveria, mesmo que apenas por tempo suficiente para puxar todos os ativos em uma página. Isso realmente reduzirá o número de solicitações SSL / TLS feitas ao servidor.
  4. Você tem conteúdo compatível com cache em seu site (especialmente para o cache de navegadores) - está fazendo uso de cabeçalhos de resposta, como Cache-Control: public, max-age=3600, s-max-age=3600 .

Se você se concentrar neles, poderá facilmente tornar um site somente HTTPS agradável e rápido. Isso é o que eu faço para um site de transmissão de vídeo que é (efetivamente) somente HTTPS, e não precisei me preocupar com os tempos de conexão SSL.

    
por 28.05.2015 / 12:08
0

Sim, é normal que o HTTPS seja aproximadamente 3 vezes mais lento na conexão estabelecida do que o HTTP. Aqui está boa leitura explicando por que .

    
por 30.05.2015 / 05:00
0

Razões para abrandar o website:

  • Certificados SSL possuem vários certificados intermediários que aumentam o volume de dados durante o handshake.

  • O desempenho do OCSP e CRL também não é corrigido, pois um site leva 1/3 de segundo para responder a uma solicitação do OCSP e estabelecer uma conexão.

Recomendações para conexões HTTPS rápidas:

  • A utilização de recursos da CPU pode ser atenuada pela compactação do conteúdo textual ou pela atualização do processo atual para lidar com a tarefa de criptografia.

  • Você precisa garantir que tudo na página seja recuperado por HTTPS.

  • Obtenha ajuda do SPDY - um protocolo de rede de código aberto do Google que minimiza o tempo de carregamento da página da Web.

  • No lado da autoridade de certificação, as CAs podem reduzir o tempo de resposta OCSP e CRL de 300 ms para 100 ms (milissegundos).

  • A CA pode reduzir o tamanho da cadeia intermediária em certificados SSL, pois consome bytes e tempo adicionais.

por 30.05.2015 / 09:14