Я уже некоторое время пытаюсь решить проблемы с 500 и 502 неисправными шлюзами на моей производственной площадке.Я заглянул в лог-файлы nginx и обнаружил, что там есть ошибки, которые, похоже, не могут мне помочь.Вот журнал ошибок для nginx:
2019/04/28 20:52:10 [crit] 921#921: *1 connect() to unix:/pathto/django/project/projectname.sock failed (2: No such file or directory) while connecting to upstream, client: x.x.x.x, server: example.com, request: "GET / HTTP/1.1", upstream: "http://unix:/pathto/django/project/projectname.sock:/", host: "example.com"
2019/04/28 20:53:55 [error] 921#921: *17 upstream prematurely closed connection while reading response header from upstream, client: x.x.x.x, server: example.com, request: "POST /games/ HTTP/1.1", upstream: "http://unix:/pathto/django/project/projectname.sock:/x/", host: "example.com", referrer: "http://example.com/x/"
2019/04/28 20:55:57 [error] 921#921: *17 upstream prematurely closed connection while reading response header from upstream, client: x.x.x.x, server: example.com, request: "POST /games/ HTTP/1.1", upstream: "http://unix:/pathto/django/project/projectname.sock:/x/", host: "example.com", referrer: "http://example.com/x/"
Я попытался увеличить время ожидания как в nginx, так и в gunicorn, но безуспешно.Некоторые операции на моем сайте выполняются в течение нескольких минут из-за нескольких запросов API, и я считаю, что это может быть время, однако я не совсем уверен.
Файл nginx, доступный для моих сайтов:
server {
listen 80;
server_name example.com;
location = /favicon.ico {
return 204;
access_log off;
log_not_found off;
}
location /static/ {
root /path/to/static/file;
}
location / {
include proxy_params;
proxy_pass
http://unix:/pathto/django/project/projectname.sock;
}
}
Мой стартовый файл gunicorn:
#!/bin/bash
NAME="projectname"
DIR=/path/to/project/root
USER=u
GROUP=u
WORKERS=3
BIND=unix:/home/u/run/gunicorn.sock
DJANGO_SETTINGS_MODULE=projectname.settings
DJANGO_WSGI_MODULE=projectname.wsgi
LOG_LEVEL=error
cd $DIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DIR:$PYTHONPATH
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $WORKERS \
--user=$USER \
--group=$GROUP \
--bind=$BIND \
--log-level=$LOG_LEVEL \
--log-file=-
Как уже упоминалось, мой веб-сайт сталкивался с несколькими 500, а также 502 ошибками, когда я начинаю выполнять свои операции API.Эти операции включают сбор (в некоторых случаях) больших объемов данных API и сохранение их в модели моих проектов.Во многих случаях это будет 502 после того, как операция длится около 30 секунд.Много раз, после того, как я повторю это во второй раз, это будет работать должным образом.Я очень застрял в данный момент и был бы признателен за любую помощь или руководство, спасибо!
Кроме того, если это полезно, я использовал это руководство для развертывания этого проекта: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04