У меня приложение развернуто в веб-фреймворке 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 испортило это.