Acerca del informe tr?fik: análisis y solución de http: problema de conexión inactiva del servidor cerrado
Después de iniciar la nueva versión del software, el sistema a menudo encuentra un error interno del servidor 500 y problemas 502 de vez en cuando.
La siguiente es la arquitectura general del software.
La solicitud se inicia desde el cliente del navegador, primero va al balanceador de carga y luego el balanceador de carga la reenvía a traefik y traefik lo reenvía a un puerto de servidor específico; detrás del puerto del servidor está el servicio web real. Por supuesto, primero pasa a través de la capa uwsgi y luego ingresa al servidor web.
Cuando ocurre un error interno del servidor 500, verifique la solicitud específica y encuentre tres pistas:
1. La solicitud fue interrumpida entre traefik y uwsgi
2; Tiene algo que ver con la conexión larga de http;
Para la misma solicitud, la primera solicitud viene con el encabezado Connection:keep-alive. Traefik cree que se ha establecido un canal de conexión largo con uwsgi. , sino porque uwsgi no admite conexiones largas y cerrará la conexión después de regresar. Cuando llega la misma segunda solicitud, traefik todavía usa el canal anterior y uwsgi ha cerrado la conexión en este momento, por lo que se informa un error: http: el servidor cerró la conexión inactiva.
Veamos uwsgi.ini en el sistema:
Aunque http-keepalive parece estar configurado, es inútil porque http-socket no admite keep-alive.
El método de configuración correcto es el siguiente:
Autor @yaoel
11 de mayo de 2017
1. Traefik falla esporádicamente al realizar proxy solicitudes
2. Opciones de uWSGI
3. Guía definitiva de HTTP 4.5.6 Keep: proxy vivo y tonto
4. http-socket no admite Keep -Alive
5. Referencia de configuración de uwsgi.ini