
Tengo una aplicación con aproximadamente 200.000 usuarios y estoy ejecutando un servidor NGINX + Gunicorn (Python) detrás de un balanceador de carga AWS EC2.
No entiendo cómo mis solicitudes son siempre de 4k/minuto, pero solo a veces la mitad del tráfico se debe a problemas de tiempo de espera. La mayoría de las veces, todas las solicitudes están bien, pero a veces comienza a bloquearse y casi todas las solicitudes obtienen tiempos de espera.
Noté que este patrón del número de conexiones actuales tiene una onda y fluctúa de 1000 a 0. ¿NGINX está agrupando solicitudes de alguna manera? ¿Cómo puedo diferenciar request_time para determinar si NGINX no está configurado correctamente o si mi servidor Python simplemente recibe llamadas a puntos finales extra lentos con demasiada frecuencia?
Adjunté una captura de pantalla de uno de los servidores en mi panel de NGINX Amplify.
¿Alguna idea de partes de los registros de NGINX o Amplify que pueda investigar para determinar si se trata de un problema de configuración de NGINX o si el proceso alojado de Python se está bloqueando? ¡Gracias!
Respuesta1
Busque en sus métricas de CloudWatch, especialmente las métricas sobre "descartado" o "fallido". Puede ver todos los detalles allí sobre su balanceador de carga y sus instancias EC2. No sé cuáles son los tipos de instancias que estás usando, pero podría ser que estés usando constantemente en exceso las instancias T2/T3 y te quedes sin crédito. Creo que algunas partes de su flujo están siendo limitadas por alguna razón y no es necesariamente un problema en las instancias mismas.