web-dev-qa-db-fra.com

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

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 concerne le réseau 3G en mode mobile ** (mode H et non pas en mode H +) **. Initier une phase de connexion et le processus de négociation SSL prend beaucoup de temps - 12 secondes. Surveillé les paramètres de minutage via Chrome onglet Réseau. Vous trouverez ci-dessous la durée de charge mesurée pour la page Web.

Page load Network Timing Stats

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

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 initiale d'établissement de la connexion sur un réseau 3G. Quelqu'un peut-il m'aider s'il vous plaît sur la façon de 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.

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

9
User234334

Connexion initiale

Vous constaterez que la connexion initiale inclut la négociation du protocole SSL. Par conséquent, comme la poignée de main est haute, c'est un bon indicateur que quelque chose ne va pas du tout dans la configuration du protocole SSL.

Google Chrome: Comprendre le minutage des ressources

Il a fallu du temps pour établir une connexion, y compris TCP, une poignée de main/tentative et la négociation d’un protocole SSL.

Handshake SSL et TTFB

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

  • TTFB: 4079ms (devrait être inférieur à 1000ms)
  • Handshake SSL 11830ms (devrait être moins de 100ms)

Il convient également de noter que lors des tests avec des périphériques 3G/4G, les premiers octets peuvent être plus longs en raison de la force variable des signaux téléphoniques ... pouvant entraîner des problèmes de connexion intermittents et des temps de latence variables.

Étape 1: Investigation du problème SSL

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

Si le protocole SSL fonctionne toujours lentement, votre serveur est probablement surchargé ou défaillant. Si c'est le plus tard, vous devrez essayer de réduire le problème. Utilisez la pile défaillance du serveur si vous avez besoin d'une assistance supplémentaire à ce sujet, n utilisateur a signalé que la création de nouvelles clés résolvait un problème SSL lent qu'il/elle rencontrait ce problème, ou peut ne pas être pertinent.

Les équilibreurs de charge peuvent aider s'il s'agit d'un problème de ressource serveur.

Étape 2: Enquête sur le TTFB

Une fois que vous avez résolu le problème du SSL et que vous avez toujours une TTFB accrue, vous devez tester votre serveur en vous assurant qu'il dispose de suffisamment de ressources.

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

  • La distance entre l'utilisateur et le centre de données hébergeant le serveur peut augmenter la TTFB
  • GZIP non associé peut augmenter la TTFB
  • Les réseaux encombrés peuvent augmenter la TTFB
  • Les serveurs encombrés peuvent augmenter TTFB

Parfois, augmenter le processeur et 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 que cela décharge en fait la mise en cache et les demandes SSL. Certains autres avantages comprennent:

SOURCE

  • Mise en cache: l'appliance peut stocker du contenu qui ne change pas (tel que des images) et le servir directement au client sans envoyer de trafic au serveur Web.
  • Compression: réduit le volume de trafic des objets HTTP en compressant les fichiers avant leur envoi.
  • Déchargement SSL: le traitement du trafic SSL est exigeant pour le processeur d'un serveur Web. Par conséquent, un équilibreur de charge peut effectuer ce traitement.
  • Haute disponibilité: Deux appareils d'équilibrage de charge peuvent être utilisés en cas d'échec.

Astuces pour baisser votre TTFB:

  • Assurez-vous que votre base de données est sur le même réseau ou sur une qualité nuage SQL .
  • Assurez-vous que votre base de données est lue dans la mémoire et JAMAIS JAMAIS le SWAP fichier!
  • Utilisez un réseau de distribution de conten , il décharge les requêtes du serveur et les tâches de compression.
  • Utilisez Varnish Cache pour réduire la charge de la base de données en mettant en cache des pages
  • Analysez vos fichiers statiques sur le disque dur avec HDParm
  • Analysez votre serveur avec outil d'analyse comparative du serveur Apache HTTP
  • Analysez le site Web avec 10 passages avec plusieurs emplacements distants en utilisant WebPageTest
8
Simon Hayter

En lisant le titre de votre question , vous pouvez faire deux choses pour accélérer la connexion initiale et la négociation SSL/TLS. Celles-ci fonctionnent pour n’importe quelle connexion, pas seulement la 3G, vous devriez donc les utiliser comme meilleures pratiques.

Commencez par utiliser HTTP/2 pour desservir le site. Ceci nécessite Apache 2.4.17 ou 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 ultérieure, avec un bon guide pour le configurer ici . L'agrafage OCSP n'accélérera pas les choses, mais il effectuera une partie du travail pour le client et lui évitera la peine d'essayer 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 demander pourquoi leur serveur est si lent. Vous feriez probablement mieux d'essayer un autre hôte partagé ou de faire tourner un VPS vous-même (c'est plus de travail mais donne plus de rapidité et de flexibilité).

Puisque vous êtes déjà sur AWS, pourquoi n'essayez pas leur niveau gratuit pour tester des choses et optimiser votre propre serveur? Utilisez-le avec un sous-domaine et des pages HTML statiques à des fins de test, puis déplacez votre site principal vers le haut (au-delà de la limite de niveau disponible, si nécessaire).

6
Tom Brossman