Come ottimizzare il tempo di caricamento della connessione iniziale e la fase di handshake SSL di una pagina Web su una rete 3G?


11

Il mio sito Web www.example.com (abilitato SSL) è ospitato su hosting condiviso Amazon EC2. Si carica più velocemente (tempo di caricamento <2 secondi) su una connessione wifi / banda larga. Il problema riguarda la rete 3G in modalità mobile ** (modalità H e non modalità H +) **. Inizia una fase di connessione e il processo di handshake SSL richiede molto tempo - 12 secondi. Monitorato i parametri di temporizzazione tramite la scheda Rete Chrome. Di seguito sono riportati i tempi di caricamento misurati per la pagina Web.

Caricamento della pagina Statistiche tempistiche rete

Tipo di dati gestiti sulla pagina: la pagina Web testata riceve 5 dati JSON associati a valori-chiave tramite AJAX e li visualizza sulla pagina Web. È una pagina molto leggera con solo 5-6 contenuti di testo.

Ho visto caricare molti siti Web più velocemente su una rete mobile 3G (modalità H). Il mio sito Web è troppo lento durante la fase iniziale di connessione su una rete 3G. Qualcuno può aiutarmi per favore su come risolvere / ottimizzare il ritardo nella fase di connessione iniziale? Il passaggio a hosting dedicato risolverà il problema attuale?

Il server Web non è occupato e c'è sempre molta CPU E memoria disponibile.

Configurazione del server: istanza Amazon EC2 - hosting condiviso (32 CPU e 60 GB RAM). Server Web - Apache. SSL - Symantec.


Hai provato a utilizzare un bilanciamento del carico elastico e farlo gestire l'HTTPS? Questo è quello che uso su Amazon e non ho visto problemi di prestazioni come questo. Inoltre, non ho mai testato specificamente contro una connessione 3G.
Stephen Ostermiller

Grazie. Il server non è bilanciato in base al carico. Testerà nuovamente il server su determinati parametri e lo proverà.
User234334

Risposte:


8

Connessione iniziale

Scoprirai che la connessione iniziale include la negoziazione dell'SSL, quindi poiché l'handshake è alta, è un buon indicatore che qualcosa non va nel modo in cui hai impostato l'SSL.

Google Chrome: comprensione della tempistica delle risorse

Tempo impiegato per stabilire una connessione, inclusi handshake / tentativi TCP e negoziazione di un SSL.

Stretta di mano SSL e TTFB

Hai due problemi principali, il tempo impiegato per completare una stretta di mano SSL e i server in attesa di TTFB (tempo al primo byte).

  • TTFB: 4079 ms (dovrebbe essere inferiore a 1000 ms)
  • Stretta di mano SSL 11830ms (dovrebbe essere inferiore a 100ms)

Va anche notato che durante i test con dispositivi 3G / 4G può causare primi byte più lunghi a causa del fatto che i segnali del telefono variano in intensità ... ciò può causare problemi di connessione intermittenti e tempi di latenza variabili.

Passaggio 1: analisi del problema SSL

È abbastanza ovvio che hai un grave problema SSL e molto probabilmente a causa di un'installazione errata di OpenSSL o simile. Inizia testando il tuo certificato SSL utilizzando SSL Labs e correggendo eventuali problemi o avvisi che suggerisce.

Se SSL continua a funzionare lentamente, molto probabilmente hai un server sovraccarico o un errore del server. Se è più tardi, allora dovrai cercare di restringere la posizione del difetto. Utilizzare lo stack Fault Server se si necessita di ulteriore assistenza in merito, un utente ha riferito che la creazione di nuove chiavi ha risolto un lento problema SSL che stava riscontrando o che potrebbe non essere rilevante.

I servizi di bilanciamento del carico possono essere d'aiuto se si tratta di un problema di risorse del server.

Passaggio 2: analisi del TTFB

Dopo aver investigato, hai risolto il problema con SSL e hai ancora un TTFB aumentato, quindi dovresti testare il tuo server assicurandoti che abbia risorse sufficienti.

Il tempo del primo byte è influenzato ma non limitato a:

  • La distanza tra l'utente e il data center che ospita il server può aumentare il TTFB
  • GZIP non memorizzato può aumentare il TTFB
  • Le reti congestionate possono aumentare il TTFB
  • I server congestionati possono aumentare il TTFB

A volte aumentare la CPU e la RAM non è sempre l'opzione migliore. A volte è meglio introdurre un bilanciamento del carico perché non solo significa che è possibile eseguire facilmente più server fianco a fianco, ma in realtà scarica le richieste di cache e SSL. Alcuni altri vantaggi includono:

FONTE

  • Memorizzazione nella cache: l'appliance può archiviare contenuti che non cambiano (come le immagini) e servirli direttamente al client senza inviare traffico al server Web.
  • Compressione: riduce la quantità di traffico per gli oggetti HTTP comprimendo i file prima che vengano inviati.
  • Offload SSL: l'elaborazione del traffico SSL è impegnativa sulla CPU di un server Web, quindi un bilanciamento del carico può invece eseguire questa elaborazione.
  • Alta disponibilità: in caso di guasto è possibile utilizzare due apparecchi di bilanciamento del carico.

Suggerimenti per abbassare il TTFB:


Grazie per la tua spiegazione dettagliata. Testerà nuovamente il server sui parametri suggeriti e implementerà il meglio!
User234334

Il grafico sulla domanda separa l'handshake SSL dalla richiesta iniziale e dal TTFB. Secondo tale grafico, il problema riguarda effettivamente SSL prima che venga effettuata la richiesta.
Stephen Ostermiller

@StephenOstermiller ben notato. Il TTFB in attesa è di 4000 ms mentre SSL è superiore a 11000ms. È probabile che SSL abbia un impatto sul TTFB. Ho aggiornato la domanda per riflettere ciò.
Simon Hayter

Grazie! Ho testato il mio SSL su www.ssllabs.com e la valutazione era "A". Non sono stati segnalati avvisi / problemi. Ho scoperto che la versione di Apache è la 2.2.15 che è obsoleta. È necessario aggiornarlo ora. I contenuti del mio sito Web (dimensioni in TB) sono in / var / www / html /. L'aggiornamento / reinstallazione di Apache rimuoverà i contenuti del mio sito Web? Qual è il metodo più sicuro per aggiornare senza perdere dati?
User234334

Un altro punto: OpenSSL è anche dell'ultima versione.
User234334

6

Leggendo il titolo della tua domanda , ci sono due cose che puoi fare per velocizzare la connessione iniziale e l'handshake SSL / TLS. Funzionano con qualsiasi connessione, non solo con 3G, quindi dovresti comunque usarle come best practice.

Innanzitutto, utilizza HTTP / 2 per servire il sito. Ciò richiede Apache 2.4.17 o successivo .

In secondo luogo, configurare Apache per utilizzare la pinzatura OCSP. Questo richiede Apache 2.3.3 o successivo più OpenSSL 0.9.8h o successivo, con una buona guida per configurarlo qui . La pinzatura OCSP non velocizzerà le cose, ma farà parte del lavoro per il client e risparmierà loro il problema di tentare una ricerca OCSP.

Leggendo il testo della tua domanda , penso che tu abbia un problema molto più grande con il tuo ambiente di hosting. Quei tempi di caricamento sono inaccettabili. Dici che si tratta di "hosting condiviso", dovresti contattare chiunque gestisca tale hosting condiviso e chiedere perché il loro server è così insolitamente lento. Probabilmente stai meglio provando un host condiviso diverso o eseguendo un VPS da solo (questo è più lavoro ma offre una maggiore velocità e flessibilità).

Dato che sei già su AWS, perché non provare il loro livello gratuito per testare le cose e far funzionare e ottimizzare il tuo server? Usalo con un sottodominio e alcune pagine HTML statiche per i test, quindi sposta il tuo sito principale su (scalando oltre i limiti di livello gratuiti se necessario).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.