¿Cuánto impacto en el rendimiento de https vs http para apache?

50

¿Aproximadamente cuánto impacto tendrá el rendimiento https en comparación con http para la misma página? Supongamos que puedo manejar 1000 solicitudes / s para abc.php, ¿cuánto disminuirá cuando acceda a través de https? Sé que esto puede depender del hardware, la configuración, el sistema operativo, etc., pero solo estoy buscando una regla general / estimación.

erotsppa
fuente
2
Sería bueno ver una respuesta aceptada para esto.
Hyppy

Respuestas:

57

Para una prueba rápida y sucia (es decir, ¡sin optimización alguna!), Habilité el simple sitio web predeterminado de Ubuntu apache2 (que solo dice "¡Funciona!") Con http y https (certificado autofirmado) en una VM local Ubuntu 9.04 y ejecuté el apache punto de referencia " ab" con 10,000 solicitudes (sin concurrencia). El cliente y el servidor estaban en la misma máquina / VM:

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

  • Tiempo necesario para las pruebas: 2.664 segundos
  • Solicitudes por segundo: 3753.69 (# / seg)
  • Tiempo por solicitud: 0.266ms

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

  • Tiempo necesario para las pruebas: 107.673 segundos
  • Solicitudes por segundo: 92.87 (# / seg)
  • Tiempo por solicitud: 10.767 ms

Si observa más de cerca (por ejemplo, con tcpdump o wireshark) en la comunicación tcp / ip de una sola solicitud , verá que el caso http requiere 10 paquetes entre el cliente y el servidor, mientras que https requiere 16: la latencia es mucho mayor con https. (Más sobre la importancia de la latencia aquí )

Agregar keep-alive ( abopción -k) a la prueba mejora la situación porque ahora todas las solicitudes comparten la misma conexión, es decir, la sobrecarga de SSL es menor, pero https todavía es medible más lento:

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

  • Tiempo necesario para las pruebas: 1.200 segundos.
  • Solicitudes por segundo: 8334.86 (# / seg)
  • Tiempo por solicitud: 0.120ms

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

  • Tiempo requerido para las pruebas: 2.711 segundos
  • Solicitudes por segundo: 3688.12 (# / seg)
  • Tiempo por solicitud: 0.271ms

conclusión :

  • En este simple caso de prueba, https es mucho más lento que http.
  • Es una buena idea habilitar el soporte de https y comparar su sitio web para ver si desea pagar los gastos generales de https.
  • Use wireshark para tener una idea de la sobrecarga de SSL.
Knweiss
fuente
1
+1 Buen trabajo allí. Gracias por publicar los números.
MN
¿Podemos obtener algunas especificaciones sobre el hardware de esa máquina? el cifrado depende en gran medida de la potencia del procesador.
Matt Simmons el
1
Recientemente realicé muchas pruebas en un VPS y la mejor cosa que afectó el rendimiento fue el cifrado que se estaba utilizando. Si restringe los cifrados a 128 bits, entonces debería poder obtener alrededor de 500-600 solicitudes por segundo. Usando un cifrado de 256 bits que caerá a <100 solicitudes por segundo. Creo que cuando hice mis propias pruebas fueron 30 solicitudes por segundo. Obviamente, los números reales dependen de su máquina.
kovert
Matt Simmons, utilicé una máquina virtual Ubuntu 9.04 VM de 2 núcleos y 64 bits (VMware Fusion) que se ejecutaba en una Mac Pro de principios de 2008 con dos CPU Intel Xeon Quad-Core a 2.8 GHz.
knweiss el
Su respuesta me ha impedido publicar una pregunta que se habría cerrado en 20 segundos. ¡Gracias!
MonkeyZeus
10

En los servidores modernos, diría que su cuello de botella sería la red y su aplicación, no el cifrado. El TLS / SSL en apache se escribirá en C bastante optimizado, por lo que se verá eclipsado por su código PHP, especialmente si va a hacer cosas como el acceso a la base de datos. Servir archivos estáticos probablemente tendrá un mayor impacto, ya que el cifrado se convertirá en una parte más importante de todo el proceso. No puedo darte ninguna cifra concreta, pero me sorprendería si fuera más del 5% y probablemente más cerca de un par de por ciento.

David Pashley
fuente
2
David tiene razón, depende del tipo de contenido que tenga. La buena manera sería comparar con apache bench httpd.apache.org/docs/2.2/programs/ab.html
radio
Además de la velocidad de cifrado, ¿qué pasa con el protocolo de enlace SSL? ¿Tendrá algún impacto en el rendimiento y el rendimiento del servidor?
erotsppa
El protocolo de enlace SSL agregará un par de paquetes al frente de una conexión. El impacto de esto dependerá masivamente de la latencia de la conexión entre el servidor y el cliente. HTTP keepalives reducirá el impacto de este apretón de manos.
David Pashley
8

¡No asumas nada, pruébalo tú mismo! En sus aplicaciones web específicas, por supuesto.

SaveTheRbtz
fuente
1

Creo que en el hardware moderno, es más probable que esté vinculado a E / S para una transacción en particular que a procesador (cómputo). Esto es particularmente cierto cuando se habla de compresión y encriptación. El cifrado de 128 bits es trivial en estos días: en general, me cuesta mucho más construir y entregar las páginas salientes que usar SSL, y no he notado una diferencia significativa en el rendimiento entre el tráfico http y https en unos pocos años.

Keith
fuente
1

Secundo la recomendación para nginx. En mis propias pruebas, se ha mantenido bien como un descargador SSL dedicado.

Chris
fuente
0

Por supuesto, si el procesamiento SSL impacta mucho, siempre puede moverlo fuera del servidor a un cuadro dedicado. Hay una buena descripción de hacer esto con nginx por aquí . Esto es algo que hemos hecho en servidores de carga equilibrada de capa 7 altamente cargados.

Cooperativas
fuente
0

Puedo confirmar que la carga adicional para el cifrado es muy pequeña en comparación con todos los demás elementos incluidos (secuencias de comandos, red, ...)

Francesco Abeni
fuente
0

Según mi experiencia, la regla general está directamente relacionada con el tamaño de su clave pública (por ejemplo, 2048, frente a 4096, frente a 8192), todo esto lleva mucho más tiempo. Sin embargo, apenas puedo notar una diferencia en un entorno de escritorio, pero en el móvil es donde se ve la diferencia, ya que requiere potencia informática.

En general es desafortunado, pero SSL siempre ha tenido y probablemente tendrá una gran penalización de rendimiento.

Areeb Soo Yasir
fuente