¿Cómo optimizar el tiempo de carga de la conexión inicial y la fase de protocolo de enlace SSL de una página web en una red 3G?

11

Mi sitio web www.example.com (SSL habilitado) está alojado en un alojamiento compartido Amazon EC2. Se carga más rápido (tiempo de carga <2 segundos) en una conexión wifi / banda ancha. El problema está en la red 3G en el móvil ** (modo H y no H +) **. Iniciar una fase de conexión y el proceso de protocolo de enlace SSL lleva mucho tiempo: 12 segundos. Supervisé los parámetros de tiempo a través de la pestaña Red de Chrome. A continuación se muestra el tiempo de carga medido para la página web.

Estadísticas de temporización de red de carga de página

Tipo de datos manejados en la página: la página web probada recibe 5 datos JSON emparejados de valor clave a través de AJAX y los muestra en la página web. Es una página muy ligera con solo 5-6 contenidos de texto.

He visto muchos sitios web cargar más rápido en una red móvil 3G (modo H). Mi sitio web es demasiado lento durante la fase inicial de establecimiento de la conexión en una red 3G. ¿Puede alguien ayudarme a resolver / optimizar el retraso en la fase de conexión inicial? ¿Pasar a un hosting dedicado resolverá el problema actual?

El servidor web no está ocupado y siempre hay mucha CPU Y memoria disponible.

Configuración del servidor: instancia de Amazon EC2: alojamiento compartido (32 CPU y 60 GB de RAM). Servidor web - Apache. SSL: Symantec.

Usuario234334
fuente
¿Has intentado usar un equilibrador de carga elástico y hacer que maneje el HTTPS? Eso es lo que uso en Amazon, y no he visto problemas de rendimiento como este. Por otra parte, nunca he probado específicamente contra una conexión 3G.
Stephen Ostermiller
Gracias. El servidor no tiene carga equilibrada. Probará el servidor en ciertos parámetros nuevamente y lo probará.
Usuario234334

Respuestas:

8

Conexión inicial

Descubrirá que la conexión inicial incluye la negociación de SSL, por lo que, dado que el apretón de manos es alto, es un buen indicador de que algo está muy mal con la forma en que configuró el SSL.

Google Chrome: comprensión del tiempo de recursos

El tiempo que llevó establecer una conexión, incluidos protocolos de enlace TCP / reintentos y negociar un SSL.

Apretón de manos SSL y TTFB

Tiene dos problemas principales: el tiempo dedicado a completar un protocolo de enlace SSL y los servidores que esperan TTFB (tiempo hasta el primer byte).

  • TTFB: 4079 ms (debe ser inferior a 1000 ms)
  • Apretón de manos SSL 11830ms (debe ser inferior a 100ms)

También debe tenerse en cuenta que cuando se prueba con dispositivos 3G / 4G puede causar primeros bytes más largos debido al hecho de que las señales del teléfono varían en intensidad ... esto puede causar problemas de conexión intermitentes y tiempos de latencia variables.

Paso 1: investigar el problema de SSL

Es bastante obvio que tiene un problema grave de SSL y probablemente debido a una instalación defectuosa de OpenSSL o similar. Comience probando su certificado SSL utilizando SSL Labs y luego corrigiendo cualquier problema o advertencia que sugiera.

Si el SSL sigue funcionando lentamente, lo más probable es que tenga un servidor sobrecargado o un error del servidor. Si es más tarde, deberá intentar reducir la ubicación de la falla. Utilice la pila de Fallas del servidor si necesita más ayuda sobre este asunto, un usuario informó que la creación de nuevas claves resolvió un problema de SSL lento que él / ella estaba encontrando que puede o no ser relevante.

Los equilibradores de carga pueden ayudar si se trata de un problema de recursos del servidor.

Paso 2: Investigando el TTFB

Una vez que haya investigado, haya resuelto el problema de SSL y aún tenga un TTFB aumentado, entonces debe probar su servidor asegurándose de que tenga suficientes recursos.

El tiempo del primer byte está influenciado por, pero no limitado a:

  • La distancia del usuario al centro de datos que aloja el servidor puede aumentar TTFB
  • GZIP sin caché puede aumentar TTFB
  • Las redes congestionadas pueden aumentar TTFB
  • Los servidores congestionados pueden aumentar TTFB

A veces, aumentar la CPU y la RAM no siempre es la mejor opción. A veces es mejor introducir un equilibrador de carga porque no solo significa que puede ejecutar fácilmente varios servidores uno al lado del otro, sino que en realidad descarga las solicitudes de almacenamiento en caché y SSL. Algunos otros beneficios incluyen:

FUENTE

  • Almacenamiento en caché: el dispositivo puede almacenar contenido que no cambia (como imágenes) y servirlo directamente al cliente sin enviar tráfico al servidor web.
  • Compresión: reduce esa cantidad de tráfico para los objetos HTTP al comprimir los archivos antes de enviarlos.
  • Descarga de SSL: el procesamiento del tráfico SSL es exigente en la CPU de un servidor web, por lo que un equilibrador de carga puede realizar este procesamiento.
  • Alta disponibilidad: se pueden usar dos dispositivos de equilibrio de carga en caso de que uno falle.

Consejos para bajar tu TTFB:

Simon Hayter
fuente
Gracias por tu explicación detallada. ¡Probará el servidor nuevamente con los parámetros sugeridos e implementará lo mejor!
Usuario234334
El gráfico de la pregunta separa el protocolo de enlace SSL de la solicitud inicial y TTFB. Según ese gráfico, el problema es en realidad con el SSL antes de que se realice la solicitud.
Stephen Ostermiller
@StephenOstermiller muy bien visto. El TTFB en espera es de 4000 ms mientras que el SSL supera los 11000 ms. Es probable que el SSL esté afectando al TTFB. He actualizado la pregunta para reflejar eso.
Simon Hayter
¡Gracias! Probé mi SSL en www.ssllabs.com y la calificación fue "A". No se informaron advertencias / problemas. Descubrí que la versión de Apache es 2.2.15, que está desactualizada. Necesito actualizarlo ahora. Los contenidos de mi sitio web (tamaño en TB) están en / var / www / html /. ¿Actualizar / reinstalar Apache eliminará el contenido de mi sitio web? ¿Algún método más seguro para actualizar sin perder datos?
Usuario234334
Un punto más: OpenSSL también es de la última versión.
Usuario234334
6

Al leer el título de su pregunta , hay dos cosas que puede hacer para acelerar la conexión inicial y el protocolo de enlace SSL / TLS. Funcionan para cualquier conexión, no solo para 3G, por lo que debe utilizarlos como la mejor práctica de todos modos.

Primero, use HTTP / 2 para servir el sitio. Esto requiere Apache 2.4.17 o posterior .

En segundo lugar, configure Apache para usar el engrapado OCSP. Esto requiere Apache 2.3.3 o posterior más OpenSSL 0.9.8ho posterior, con una buena guía para configurarlo aquí . El grapado OCSP no acelerará las cosas, pero hará parte del trabajo para el cliente y les ahorrará la molestia de intentar una búsqueda OCSP.

Al leer el texto del cuerpo de su pregunta , creo que tiene un problema mucho mayor con su entorno de alojamiento. Esos tiempos de carga son inaceptables. Usted menciona que se trata de "alojamiento compartido", debe ponerse en contacto con quien administra ese alojamiento compartido y preguntar por qué su servidor es tan inusualmente lento. Probablemente sea mejor probar un host compartido diferente o ejecutar un VPS usted mismo (esto es más trabajo, pero ofrece una mayor velocidad y flexibilidad).

Como ya está en AWS, ¿por qué no prueba su nivel gratuito para probar y hacer que su propio servidor funcione y se optimice? Úselo con un subdominio y algunas páginas HTML estáticas para probar y luego mueva su sitio primario (escale más allá de los límites de nivel libre si es necesario).

Tom Brossman
fuente