Джанго Уссги + nginx повторные процессы - PullRequest
0 голосов
/ 20 сентября 2018

У меня приложение развернуто в веб-фреймворке django, работающем с wsgi + nginx в рабочей среде.Недавно я обнаружил странное поведение wsgi, когда он начинает выполнять / повторять функцию, если исходный запрос не завершается в течение 4-5 минут.Я увеличил read_timeout и write_timeout в конфигурационном файле nginx, однако эта проблема все еще существует !!любой специалист по развертыванию nginx uwsgi?Фрагмент из файла nginx.conf: -

location /netadc/ {
            uwsgi_pass  django;
            include    /apps/netadc/netadc/uwsgi_params;# the uwsgi_params file you installed
            uwsgi_read_timeout 1800;
            uwsgi_send_timeout 1800;
            proxy_read_timeout 1800;


    }

По сути, эта функция / скрипт выполняет много предварительных проверок, создает снимок н / ж устройств, передает настройки примерно на 30-40 устройств и публикуетвалидация.так что выполнение занимает минимум 2-3 минуты.иногда, когда это занимает более 5 минут, он перезапускает процесс wsgi, но не уверен почему ..., поскольку я уже увеличил время ожидания до 30 минут, как показано выше.

uwsgi_params: -

uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

Нет ошибки в файле ошибок nginx или в файле журнала доступа, который я могу найти.

Файл nginx.conf: -

 upstream django {
        server unix:///apps/netadc/netadc/uwsgi/tmp/netadc.sock; # for a file socket
        #server 127.0.0.1:8000; # for a web port socket (we'll use this first)
    }

 server {
        #listen       443;
        listen       443 ssl;
        server_name  x.x.x.x;
        uwsgi_ignore_client_abort on;

        #client timeouts
        #client_body_timeout 600;
        #client_header_timeout 600;
        #keepalive_timeout 240;
        #send_timeout 600;

        #client buffer sizes
        #client_body_buffer_size 1m;
        #client_max_body_size 32m;

        client_body_temp_path       /apps/netadc/opt/nginx/root/var/log/nginx/client_body_temp;

        ssl_certificate      cert_path;
        ssl_certificate_key  key_path;

        location /netadc/static {
                alias /apps/netadc/static;
        }

        location /netadc/ {
                uwsgi_pass  django;
                include    /apps/netadc/netadc/uwsgi_params;# the uwsgi_params file you installed
                uwsgi_read_timeout 7200;
                uwsgi_send_timeout 7200;
                proxy_read_timeout 3600;

                #return 301 https://$host$request_uri;
                #proxy_set_header X-Forwarded-Proto $scheme;
        }

 server {
        listen       80;
        server_name  x.x.x.x;
        uwsgi_ignore_client_abort on;

        location /netadc/ {
                return 301 https://$host$request_uri;
        }
    }

Файл конфигурации uwsgi - netadc_uwsgi.INI-файл, я предполагаю: -

# netadc_uwsgi.ini file
[uwsgi]

#uid    =       nginx
#gid    =       nginx

# Django-related settings
env     =       HTTPS=on

# the base directory (full path)
chdir   =       /apps/netadc

# Django's wsgi file
module  =       netadc.wsgi

# the virtualenv (full path)
home    =       home_path

# process-related settings
# master
master   =      true

# maximum number of worker processes
processes       = 10

buffer-size =   65536
buffer-size =   32768

# the socket (use the full path to be safe
socket  = /apps/netadc/netadc/uwsgi/tmp/netadc.sock

# read post data by default
post-buffering  =   1

# ... with appropriate permissions - may be needed
#chmod-socket    = 666

# daemonize
daemonize       =       true

# logging
logger  =       file:/apps/netadc/netadc/uwsgi/tmp/netadc_uwsgi.log

# clear environment on exit
vacuum  =       true

Аргументы командной строки: -

/apps/netadc/.venvs/netadc/bin/uwsgi --ini /apps/netadc/netadc/uwsgi/netadc_uwsgi.ini --enable-threads

Также еще одна странная вещь, это найти, некоторые изменения разрешений через неделю и некоторые из моих приложенийне загружать

[root@xxxxxxx ~]# ls -l /opt/rh/nginx16/root/var/lib/nginx/tmp/
total 20
drwxrwxr-x  2 my_username nginx 4096 Aug 20 10:27 client_body
drwxrwxr-x  2 my_username nginx 4096 Jan 21  2015 fastcgi
drwxrwxr-x  2 my_username nginx 4096 Jan 21  2015 proxy
drwxrwxr-x  2 my_username nginx 4096 Jan 21  2015 scgi
drwxrwxr-x 12 my_username nginx 4096 Sep  7 12:31 uwsgi

Пока я не изменю вышеуказанные разрешения на 777, страница загружается вечно.И затем через неделю он случайным образом меняет разрешения на вышеуказанные 775. Это очень странно.Ни одна команда по инфраструктуре не вносит никаких изменений, поэтому я уверен, что что-то в nginx + uwsgi испортило это.

...