¿Cómo puedo solucionar la alta latencia en mi equilibrador de carga clásico de ELB?

4 minutos de lectura
0

Experimento una latencia alta cuando me conecto a un equilibrador de carga clásico de Elastic Load Balancing (ELB).

Descripción breve

La alta latencia en un equilibrador de carga clásico se produce por los siguientes motivos:

  • Problemas de conectividad de red
  • Configuración incorrecta del equilibrador de carga clásico
  • Uso elevado de memoria (RAM) en instancias de backend
  • Uso elevado de CPU en instancias de backend
  • Configuración incorrecta del servidor web en las instancias de backend
  • Problemas con las dependencias de las aplicaciones web que se ejecutan en instancias de backend, como bases de datos externas o buckets de Amazon Simple Storage Service (Amazon S3)

Resolución

1.    Solucione los problemas de conectividad de red de su equilibrador de carga clásico.

2.    Configure el equilibrador de carga clásico para su caso de uso.

3.    Consulte los registros de acceso de su equilibrador de carga clásico para determinar qué instancias de backend experimentan una latencia alta. Revise backend_processing_time para encontrar instancias de backend con problemas de latencia.
Para comprobar que el servidor de aplicaciones web de una instancia de backend experimenta una latencia alta, use curl para medir la respuesta del primer byte:

[ec2-user@ip-192.0.2.0 ~]$ for X in `seq 6`; do curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" http://www.example.com/ -so /dev/null; done  
High Latency sample output:  
HTTPCode=200 TotalTime=2.452  
HTTPCode=200 TotalTime=1.035
Low latency sample output:  
HTTPCode=200 TotalTime=0.515  
HTTPCode=200 TotalTime=0.013

4.    Consulte la estadística Average de la métrica de latencia de Amazon CloudWatch para su equilibrador de carga clásico. Si el valor es alto, hay un problema con las instancias de backend o los servidores de dependencias de aplicaciones.

5.    Compruebe la estadística Maximum de la métrica de latencia. Si el valor alcanza o supera el valor de tiempo de espera de inactividad, las solicitudes se agotan y provocan los errores HTTP 504.

6.    Compruebe si hay patrones en la métrica Latencia. Los picos de métricas a intervalos regulares indican problemas de rendimiento con las instancias de backend debido a la sobrecarga de las tareas programadas.

7.    Consulte la métrica SurgeQueueLength de CloudWatch para ELB. Si las solicitudes al equilibrador de carga clásico superan el valor máximo (1024), estas se rechazan y el equilibrador de carga genera un error HTTP 503. La estadística de suma de la métrica SpilloverCount mide el número total de solicitudes rechazadas. Para obtener más información, consulte ¿Cómo puedo solucionar los problemas de capacidad del equilibrador de carga clásico en ELB?

8.    Revise el Apache que se procesa en sus instancias de backend para comprobar si hay problemas de memoria.

Ejemplo de comando:

watch -n 1 "echo -n 'Apache Processes: ' && ps -C apache2 --no-headers | wc -l && free -m"

Ejemplo de salida:

Every 1.0s: echo –n 'Apache Processes: ' && ps –C apache2 –no-
headers | wc -1 && free –m
Apache Processes: 27
          total     used     free     shared     buffers     cached
Mem:      8204      7445     758      0          385         4567
-/+ buffers/cache:  2402     5801
Swap:     16383     189      16194

9.    Compruebe la métrica de CPUUtilization de CloudWatch de sus instancias de backend. Busque un uso elevado de la CPU o picos en el uso de la misma. Para un uso elevado de la CPU, actualice sus instancias a un tipo de instancia más grande.

10.    Compruebe la configuración de MaxClient para los servidores web de sus instancias de backend. Esta configuración define el número de solicitudes simultáneas que puede atender la instancia. Para instancias con un uso adecuado de memoria y CPU que experimenten una latencia alta, aumente el valor MaxClient.

Compare la cantidad de procesos que Apache (httpd) genera con la configuración MaxClient. Si el número de procesos de Apache alcanza con frecuencia el valor de MaxClient, aumente el valor.

Ejemplo de comando:

[root@ip-192.0.2.0 conf]# ps aux | grep httpd | wc -l 15

Ejemplo de salida:

<IfModule prefork.c>  
StartServers         10  
MinSpareServers      5  
MaxSpareServers      10  
ServerLimit          15  
MaxClients           15  
MaxRequestsPerChild  4000  
</IfModule>

11.    Compruebe si hay dependencias que causen problemas de latencia en sus instancias de backend.

Estas son algunas de las dependencias que pueden causar problemas de latencia:

  • Bases de datos compartidas, recursos externos, como buckets de S3
  • Conexiones de recursos externos, como instancias de traducción de direcciones de red (NAT)
  • Servicios web remotos
  • Servidores proxy

Información relacionada

Monitor your Classic Load Balancer

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 10 meses