web-dev-qa-db-fra.com

Combien de performances frappées pour HTTPS vs http for Apache?

À peu près à quel point le succès des performances sera-t-il par rapport à HTTP pour la même page? Supposons que je puisse gérer 1000 demandes/s pour ABC.PHP, combien cela va-t-il diminuer lorsqu'il est accessible via HTTPS? Je sais que cela pourrait être dépendant du matériel, de la configuration, du système d'exploitation etc, etc., mais je suis juste à la recherche d'une règle générale de l'estimation/estimation.

50
erotsppa

Pour un test rapide et sale (c'est-à-dire sans optimisation!) J'ai activé le site Web simple Ubuntu Apache2 par défaut (qui explique simplement "ça marche!") Avec HTTP et HTTPS (certificat auto-signé) sur un Ubuntu 9.04 == VM et dirigé le repère Apache "ab" avec 10 000 demandes (pas de concurrence). Le client et le même serveur étaient sur la même machine/vm:

Résultats pour http ("ab -n 10000 http://ubuntu904/index.html ")

  • Temps pris pour les tests: 2.664 secondes
  • Demandes par seconde: 3753.69 (#/s)
  • Temps par demande: 0.266ms

Résultats pour https ("ab -n 10000 https://ubuntu904/index.html "):

  • Temps pris pour les tests: 107.67 secondes
  • Demandes par seconde: 92.87 (#/s)
  • Temps par demande: 10.767MS

Si vous regardez de plus près (par exemple avec TCPDump ou WireShark) à la communication TCP/IP de A Demande unique Vous verrez que le boîtier HTTP nécessite 10 paquets entre client et serveur, tandis que HTTPS nécessite 16: La latence est beaucoup plus élevée avec HTTPS. (Plus sur l'importance de la latence ici )

Ajout de garde-vie (ab option -k) À l'épreuve améliore la situation, car maintenant toutes les demandes partagent la même connexion. Les frais généraux SSL sont inférieurs - mais HTTPS est toujours mesurable plus lent:

Résultats pour http avec Keep-Alive ("ab -k -n 10000 http://ubuntu904/index.html ")

  • Temps pris pour les tests: 1.2 secondes
  • Demandes par seconde: 8334.86 (#/s)
  • Temps par demande: 0.120ms

Résultats pour https avec Keep-Alive ("ab -k -n 10000 https://ubuntu904/index.html "):

  • Temps pris pour les tests: 2.711 secondes
  • Demandes par seconde: 3688.12 (#/s)
  • Temps par demande: 0.271ms

Conclusion:

  • Dans ce simple test HTTPS, HTTPS est beaucoup plus lent que HTTP.
  • C'est une bonne idée d'activer le support et la barre de référence HTTPS votre site Web Pour voir si vous souhaitez payer les frais généraux HTTPS.
  • Utilisez WireShark pour avoir une impression de la surcharge SSL.
57
knweiss

Ne présumez rien, testez-le vous-même! sur vos applications Web spécifiques bien sûr.

8
SaveTheRbtz

Je seconde la recommandation pour nginx. Dans mes propres tests, il a bien résisté en tant que déchargeur SSL dédié.

1
Chris

Je trouve que sur le matériel moderne, je suis plus susceptible d'être I/O liée à une transaction particulière que je suis un processeur (calcul) lié. Cela est particulièrement vrai lorsque vous parlez de compression et de cryptage. Le cryptage de 128 bits est trivial ces jours-ci - je suis généralement frappé beaucoup plus difficile de bâtir et de livrer les pages sortantes que j'utilise SSL, et n'a pas remarqué une différence significative de la performance entre le trafic HTTP et HTTPS dans quelques années.

1
Keith

Bien sûr, si le traitement SSL frappe fort, vous pouvez toujours le déplacer hors serveur à une boîte de dédicace. Il y a une belle rédaction de faire cela avec Nginx sur ici . C'est quelque chose que nous avons fait sur des serveurs équilibrés de la couche très chargée de la couche 7.

0
Coops

De mon expérience, la règle générale est directement liée à la taille de votre clé publique (par exemple, 2048, VS 4096, VS 8192) prennent beaucoup plus longtemps. Cependant, je peux à peine remarquer une différence dans un environnement de bureau, mais mobile est l'endroit où vous voyez une différence car elle prend la puissance de calcul.

En général, il est regrettable mais SSL a toujours et fera probablement toujours une pénalité de performance énorme.

0
Areeb Soo Yasir

Je peux confirmer que la charge supplémentaire pour le cryptage est très faible par rapport à tous les autres éléments inclus (script, réseau, ...)

0
Francesco Abeni