es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuello de botella del servidor ASGI Django alojado en Azure al manejar más de una docena de solicitudes simultáneas.

Soy nuevo en trabajar con ASGI y tengo algunos problemas de rendimiento con mi servidor API de Django, así que cualquier información sería muy apreciada.

Después de realizar algunas pruebas de carga utilizando JMeter, parece que la aplicación puede manejar menos de 10 solicitudes simultáneas como se esperaba, pero cualquier cantidad mayor que eso hace que los hilos de la aplicación se bloqueen y la tasa de respuesta disminuya drásticamente (se puede observar en la muestra #14 en adelante en la columna ‘Tiempo de muestra (ms)’ en la captura de pantalla proporcionada). Es como si las solicitudes solo se estuvieran procesando en 1-2 hilos después de ese punto en lugar de los 4 configurados. Aquí está mi configuración startup.sh:

gunicorn --workers 8 --threads 4 --timeout 60 --access-logfile \
'-' --error-logfile '-' --bind=0.0.0.0:8000  -k uvicorn.workers.UvicornWorker \
--chdir=/home/site/wwwroot GSE_Backend.asgi

Soy consciente de que las respuestas individuales de la API son bastante lentas. Eso es algo que quiero abordar. Sin embargo, ¿hay algo que esté haciendo mal a nivel de ASGI aquí? Gracias.

Editar: También he añadido una segunda captura de pantalla de las pruebas de carga. Esta utiliza una API que simplemente duerme durante 10 segundos, por lo que debería tener poco impacto en la CPU/memoria. Vuelve a ocurrir un patrón similar donde se responden cada vez menos solicitudes al mismo tiempo.

Imagen 1
Imagen 2

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el servidor de la API de Django está experimentando problemas de rendimiento al manejar más de 10 solicitudes simultáneas. El tiempo de respuesta disminuye significativamente después de un cierto punto, lo que indica que las solicitudes solo se están procesando en 1-2 hilos en lugar de los 4 configurados. La configuración startup.sh parece correcta, pero podría valer la pena ajustar los valores de cantidad de trabajadores y hilos para optimizar el rendimiento.

    Sin embargo, los tiempos de respuesta de la API también son lentos, y esto podría contribuir a los problemas de rendimiento. Se recomienda optimizar los tiempos de respuesta de la API antes de realizar cambios en la configuración ASGI.

    También es importante tener en cuenta que ASGI es un estándar más nuevo para manejar aplicaciones web asíncronas y ofrece un mejor rendimiento que los servidores tradicionales WSGI. Sin embargo, requiere una comprensión profunda de la concurrencia y la paralelización. Se recomienda consultar la documentación de ASGI o buscar ayuda profesional al implementarlo en un entorno de producción.

Comments are closed.