Quanto de um acerto de desempenho para https vs http para o apache?

50

Aproximadamente quanto de um hit de desempenho o https leva comparado a http para a mesma página? Suponha que eu possa lidar com 1000 solicitações / s para abc.php, quanto diminuirá quando acessado por meio de https? Eu sei que isso pode ser dependente de hardware, configuração, SO etc etc, mas estou apenas procurando uma regra geral / estimativa.

    
por erotsppa 21.07.2009 / 20:45

8 respostas

57

Para um teste rápido e sujo (isto é, sem otimização!) habilitei o simples site padrão apache2 do Ubuntu (que apenas diz "Funciona!") com http e https (certificado autoassinado) em um Ubuntu 9.04 local VM e executei o benchmark do apache " ab " com 10.000 solicitações (sem concorrência). Cliente e servidor estavam na mesma máquina / VM:

Resultados para link (" ab -n 10000 http://ubuntu904/index.html ")

  • Tempo gasto para testes: 2.664 segundos
  • Solicitações por segundo: 3753,69 (# / s)
  • Tempo por solicitação: 0,266ms

Resultados para link (" ab -n 10000 https://ubuntu904/index.html "):

  • Tempo necessário para testes: 107,673 segundos
  • Solicitações por segundo: 92,87 (# / seg)
  • Tempo por solicitação: 10.767ms

Se você olhar mais de perto (por exemplo, com tcpdump ou wireshark) na comunicação tcp / ip de uma solicitação única , verá que o caso http requer 10 pacotes entre cliente e servidor, enquanto https requer 16: A latência é muito maior com https. (Mais sobre a importância da latência aqui )

Adicionar keep-alive ( ab option -k ) ao teste melhora a situação porque agora todos os pedidos compartilham a mesma conexão, ou seja, o overhead SSL é menor - mas o https ainda é mensurável mais lento:

Resultados para link com keep-alive (" ab -k -n 10000 http://ubuntu904/index.html ")

  • Tempo gasto para testes: 1.200 segundos
  • Solicitações por segundo: 8334,86 (# / seg)
  • Tempo por solicitação: 0,120 ms

Resultados para link com keep-alive (" ab -k -n 10000 https://ubuntu904/index.html "):

  • Tempo gasto para testes: 2.711 segundos
  • Solicitações por segundo: 3688.12 (# / seg)
  • Tempo por solicitação: 0,271 ms

Conclusão :

  • Nesse teste simples, o https é muito mais lento que o http.
  • É uma boa ideia ativar o suporte a https e comparar o seu site para ver se você deseja pagar pela sobrecarga de https.
  • Use o wireshark para obter uma impressão da sobrecarga de SSL.
por 22.07.2009 / 02:25
10

Em servidores modernos, eu diria que seu gargalo seria a rede e seu aplicativo, não a criptografia. O TLS / SSL no apache será escrito em C bastante otimizado, então será anulado pelo seu código PHP, especialmente se você estiver fazendo coisas como acesso ao banco de dados. Servir arquivos estáticos provavelmente terá um impacto maior, já que a criptografia se tornará uma parte maior de todo o processo. Eu não posso dar-lhe quaisquer números concretos, mas eu ficaria surpreso se fosse mais de 5% e, provavelmente, um par de por cento.

    
por 21.07.2009 / 20:53
8

Não assuma nada, teste você mesmo! Em seus aplicativos da Web específicos, é claro.

por 22.07.2009 / 00:04
1

Descobri que, em hardware moderno, tenho mais probabilidade de estar vinculado a E / S para uma transação específica do que estou com processador (compute) ligado. Isso é particularmente verdadeiro quando se fala em compactação e criptografia. A criptografia de 128 bits é trivial hoje em dia - geralmente estou tendo muito mais dificuldade em construir e entregar as páginas de saída do que com SSL e não notei uma diferença significativa no desempenho entre o tráfego http e https em alguns anos.

    
por 21.07.2009 / 21:08
1

Eu recomendo o nginx. Em meus próprios testes, ele se manteve bem como um descarregador de SSL dedicado.

    
por 22.07.2009 / 12:23
0

É claro que, se o processamento do SSL for muito difícil, você poderá movê-lo para fora do servidor para uma caixa dedicada. Existe uma boa descrição de como fazer isso com o nginx em aqui . Isso é algo que fizemos em servidores altamente carregados com carga balanceada da camada 7.

    
por 21.07.2009 / 20:59
0

Posso confirmar que a carga adicional para criptografia é muito pequena em comparação a todos os outros elementos incluídos (scripts, rede, etc.)

    
por 21.07.2009 / 23:01
0

Da minha experiência, a regra geral está diretamente relacionada ao tamanho da sua chave pública (por exemplo, 2048, vs 4096, vs 8192), todos demoram significativamente mais tempo. No entanto, mal posso notar uma diferença em um ambiente de área de trabalho, mas o celular é onde você vê a diferença, uma vez que leva o poder de computação.

Em geral, é lamentável, mas o SSL tem sempre e provavelmente sempre sofrerá uma enorme penalidade de desempenho.

    
por 19.04.2016 / 00:15