À 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.
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
")
Résultats pour https ("ab -n 10000 https://ubuntu904/index.html
"):
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
")
Résultats pour https avec Keep-Alive ("ab -k -n 10000 https://ubuntu904/index.html
"):
Conclusion:
Je seconde la recommandation pour nginx. Dans mes propres tests, il a bien résisté en tant que déchargeur SSL dédié.
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.
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.
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.
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, ...)