Comment optimiser le temps de chargement de la connexion initiale et la phase de prise de contact SSL d'une page web sur un réseau 3G?


11

Mon site Web www.example.com (SSL activé) est hébergé sur l'hébergement partagé Amazon EC2. Il se charge plus rapidement (temps de chargement <2 secondes) sur une connexion wifi / haut débit. Le problème est sur le réseau 3G dans le mobile ** (mode H et non mode H +) **. Initier une phase de connexion et le processus de prise de contact SSL prend beaucoup de temps - 12 secondes. Surveillé les paramètres de synchronisation via l'onglet Réseau Chrome. Vous trouverez ci-dessous le calendrier de chargement mesuré pour la page Web.

Statistiques de synchronisation du réseau de chargement de page

Type de données traitées sur la page: la page Web testée reçoit 5 données JSON appariées par valeur-clé via AJAX et les affiche sur la page Web. C'est une page très légère avec seulement 5-6 contenus textuels.

J'ai vu de nombreux sites Web se charger plus rapidement sur un réseau mobile 3G (mode H). Mon site Web est trop lent pendant la phase d'établissement de la connexion initiale sur un réseau 3G. Quelqu'un peut-il m'aider à résoudre / optimiser le retard dans la phase de connexion initiale? Le passage à un hébergement dédié résoudra-t-il le problème actuel?

Le serveur Web n'est pas occupé et il y a toujours beaucoup de CPU ET de mémoire disponible.

Configuration du serveur: Instance Amazon EC2 - Hébergement partagé (32 CPU et 60 Go de RAM). Serveur Web - Apache. SSL - Symantec.


Avez-vous essayé d'utiliser un équilibreur de charge élastique et de le faire gérer le HTTPS? C'est ce que j'utilise chez Amazon, et je n'ai pas vu de problèmes de performances comme celui-ci. Là encore, je n'ai jamais testé spécifiquement contre une connexion 3G.
Stephen Ostermiller

Je vous remercie. Le serveur n'est pas équilibré en charge. Testera à nouveau le serveur sur certains paramètres et l'essayera.
User234334

Réponses:


8

Connexion initiale

Vous constaterez que la connexion initiale comprend la négociation du SSL, donc comme la poignée de main est élevée, c'est un bon indicateur que quelque chose ne va vraiment pas dans la façon dont vous avez configuré le SSL.

Google Chrome: Comprendre la synchronisation des ressources

Le temps qu'il a fallu pour établir une connexion, y compris les négociations / tentatives TCP et la négociation d'un SSL.

Prise de contact SSL et TTFB

Vous avez deux problèmes majeurs, le temps passé à terminer une négociation SSL et les serveurs en attente de TTFB (temps jusqu'au premier octet).

  • TTFB: 4079ms (devrait être inférieur à 1000ms)
  • Prise de contact SSL 11830 ms (doit être inférieure à 100 ms)

Il convient également de noter que lorsque vous testez avec des appareils 3G / 4G, cela peut entraîner des premiers octets plus longs en raison du fait que les signaux téléphoniques varient en intensité ... cela peut entraîner des problèmes de connexion intermittents et des temps de latence variables.

Étape 1: enquête sur le problème SSL

Il est assez évident que vous avez un problème SSL grave et probablement dû à une installation défectueuse d'OpenSSL ou similaire. Commencez par tester votre certificat SSL à l'aide de SSL Labs , puis corrigez les problèmes ou avertissements suggérés.

Si le SSL fonctionne toujours lentement, vous avez probablement un serveur surchargé ou une panne de serveur. Si c'est le plus tard, vous devrez essayer de préciser où se situe la faute. Utilisez la pile Server Fault si vous avez besoin d'aide supplémentaire à ce sujet, un utilisateur a signalé que la création de nouvelles clés résolvait un problème SSL lent qu'il rencontrait, qui pouvait ou non être pertinent.

Les équilibreurs de charge peuvent vous aider en cas de problème de ressource serveur.

Étape 2: Enquête sur le TTFB

Une fois que vous avez enquêté sur la résolution du problème de SSL et que vous disposez toujours d'un TTFB accru, vous devez tester votre serveur en vous assurant qu'il dispose de suffisamment de ressources.

Le temps du premier octet est influencé par, mais sans s'y limiter:

  • La distance de l'utilisateur au centre de données hébergeant le serveur peut augmenter le TTFB
  • Le GZIP non mis en cache peut augmenter le TTFB
  • Les réseaux encombrés peuvent augmenter le TTFB
  • Les serveurs congestionnés peuvent augmenter le TTFB

Parfois, augmenter le CPU et la RAM n'est pas toujours la meilleure option. Parfois, il est préférable d'introduire un équilibreur de charge, car cela signifie non seulement que vous pouvez facilement exécuter plusieurs serveurs côte à côte, mais qu'il décharge la mise en cache et les demandes SSL. Certains autres avantages incluent:

LA SOURCE

  • Mise en cache: l'appliance peut stocker du contenu qui ne change pas (comme des images) et les servir directement au client sans envoyer de trafic vers le serveur Web.
  • Compression: réduit la quantité de trafic pour les objets HTTP en compressant les fichiers avant leur envoi.
  • Déchargement SSL: le traitement du trafic SSL est exigeant sur le processeur d'un serveur Web, donc un équilibreur de charge peut effectuer ce traitement à la place.
  • Haute disponibilité: deux appliances d'équilibrage de charge peuvent être utilisées en cas de défaillance d'une.

Conseils pour abaisser votre TTFB:

  • Assurez-vous que votre base de données se trouve sur le même réseau ou un cloud SQL de qualité .
  • Assurez-vous que votre base de données est lue dans la mémoire et JAMAIS JAMAIS le fichier SWAP !
  • Utilisez un réseau de diffusion de contenu , il décharge les demandes du serveur et les tâches de compression.
  • Utilisez Varnish Cache pour réduire la charge sur la base de données en mettant en cache les pages
  • Comparez vos fichiers statiques sur le disque dur à l'aide de HDParm
  • Analysez votre serveur à l'aide de l' outil d'analyse comparative des serveurs HTTP Apache
  • Benchmark du site Web avec 10 passes avec plusieurs emplacements distants à l'aide de WebPageTest

Merci pour votre explication détaillée. Testera à nouveau le serveur sur les paramètres suggérés et implémentera le meilleur!
User234334

Le graphique sur la question sépare la négociation SSL de la demande initiale et du TTFB. Selon ce graphique, le problème est en fait avec le SSL avant la demande.
Stephen Ostermiller

@StephenOstermiller bien repéré. Le TTFB en attente est de 4000 ms tandis que le SSL est supérieur à 11000 ms. Il est probable que le SSL affecte le TTFB. J'ai mis à jour la question pour refléter cela.
Simon Hayter

Je vous remercie! J'ai testé mon SSL sur www.ssllabs.com et la note était "A". Aucun avertissement / problème n'a été signalé. J'ai trouvé que la version Apache est 2.2.15 qui est obsolète. Besoin de le mettre à jour maintenant. Le contenu de mon site Web (taille en To) se trouve dans / var / www / html /. La mise à jour / réinstallation d'Apache supprimera-t-elle le contenu de mon site Web? Quelle méthode la plus sûre pour mettre à jour sans perdre de données?
User234334

Un autre point - OpenSSL est également de la dernière version.
User234334

6

En lisant le titre de votre question , il y a deux choses que vous pouvez faire pour accélérer la connexion initiale et la négociation SSL / TLS. Ceux-ci fonctionnent pour n'importe quelle connexion, pas seulement pour la 3G, vous devez donc les utiliser comme meilleure pratique de toute façon.

Tout d'abord, utilisez HTTP / 2 pour servir le site. Cela nécessite Apache 2.4.17 ou une version ultérieure .

Deuxièmement, configurez Apache pour utiliser l'agrafage OCSP. Cela nécessite Apache 2.3.3 ou version ultérieure plus OpenSSL 0.9.8h ou version ultérieure, avec un bon guide pour le configurer ici . L'agrafage OCSP n'accélérera pas les choses, mais cela fera une partie du travail pour le client et lui épargnera la peine de tenter une recherche OCSP.

En lisant le corps du texte de votre question , je pense que vous avez un problème beaucoup plus important avec votre environnement d'hébergement. Ces temps de chargement sont inacceptables. Vous mentionnez qu'il s'agit d'un «hébergement partagé», vous devez contacter la personne qui gère cet hébergement partagé et lui demander pourquoi son serveur est si inhabituellement lent. Vous feriez probablement mieux d'essayer un autre hôte partagé ou d'exécuter un VPS vous-même (c'est plus de travail mais donne une meilleure vitesse et flexibilité).

Puisque vous êtes déjà sur AWS, pourquoi ne pas essayer leur niveau gratuit pour tester les choses et faire fonctionner et optimiser votre propre serveur? Utilisez-le avec un sous-domaine et certaines pages HTML statiques pour les tests, puis déplacez votre site principal (évoluez au-delà des limites de niveau gratuit si nécessaire).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.