mysql - Error: la conexión en sentido ascendente se cerró prematuramente mientras se leía el encabezado de la respuesta en sentido ascendente
django nginx (4)
A veces puede ser un problema de autoridad. Compruebe la autoridad del directorio del proyecto.
Actualmente, SIEMPRE obtengo un 502 en una consulta que realizan mis usuarios ... que generalmente devuelve 872 filas y tarda 2.07 en ejecutarse en MySQL. Sin embargo, está devolviendo MUCHA información. (Cada fila contiene muchas cosas). ¿Algunas ideas?
Ejecutando la pila Django (tastypie Rest API), Nginx y uWSGI.
Configuración del servidor con NGINX
# the upstream component nginx needs to connect to
upstream django {
server unix:///srv/www/poka/app/poka/nginx/poka.sock; # for a file socket
}
# configuration of the server
server {
# the port your site will be served on
listen 443;
# the domain name it will serve for
server_name xxxx; # substitute your machine''s IP address or FQDN
charset utf-8;
# max upload size
client_max_body_size 750M; # adjust to taste
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /srv/www/poka/app/poka/nginx/uwsgi_params; # the uwsgi_params file you installed
}
}
Config UWSGI
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 2
# the socket (use the full path to be safe
socket = /srv/www/poka/app/poka/nginx/poka.sock
# ... with appropriate permissions - may be needed
chmod-socket = 666
# clear environment on exit
vacuum = true
pidfile = /tmp/project-master.pid # create a pidfile
harakiri = 120 # respawn processes taking more than 20 seconds
max-requests = 5000 # respawn processes after serving 5000 requests
daemonize = /var/log/uwsgi/poka.log # background the process & log
log-maxsize = 10000000
#http://uwsgi-docs.readthedocs.org/en/latest/Options.html#post-buffering
post-buffering=1
logto = /var/log/uwsgi/poka.log # background the process & log
En su bloque de ubicación de @django puede intentar agregar algunas propiedades de tiempo de espera de lectura y conexión de proxy. p.ej
location @django {
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
# proxy header definitions
...
proxy_pass http://django;
}
Es poco probable que esto sea un problema de configuración de nginx.
Es casi seguro que el backend se está estrellando (o simplemente finaliza la conexión) en lugar de dar una respuesta mal formada. es decir, el mensaje de error le indica cuál es el problema, pero está buscando en el lugar equivocado para resolverlo.
No das suficiente información para permitirte averiguar cuál es el problema exacto, pero si tuviera que adivinar:
que generalmente devuelve 872 filas y tarda 2.07 en ejecutarse en MySQL. Sin embargo, está devolviendo MUCHA información.
Se está agotando el tiempo en algún lugar o se está quedando sin memoria.
Tuve el mismo problema, lo que lo solucionó para mí es agregar mi dominio en la configuración.py, por ejemplo:
ALLOWED_HOSTS = [''.mydomain.com'', ''127.0.0.1'', ''localhost'']
Por el mismo problema, quiero decir que ni siquiera podía cargar la página, nginx devolvería un 502 sin servir ninguna página en la que pudiera provocar un bloqueo de la aplicación.
Y el registro de nginx contenía:
Error: upstream prematurely closed connection while reading response header from upstream