Рейтинг:0

Получение ошибок тайм-аута с приложением nginx+gunicorn в службах приложений Azure

флаг id

Ребята, мне нужна помощь с моей конфигурацией NGINX. Прямо сейчас приложение Django размещено в службах приложений Azure, и переход прямо к Gunicorn работает нормально, но когда я перехожу через NGINX, я начинаю получать ошибки, например такие:

Я пытался увеличить время ожидания, но ошибки продолжают возникать время от времени на разных конечных точках, и конечные точки работают нормально, когда я не использую NGINX, а просто использую пушку, поэтому я думаю, что это должно что-то сделать с набором NGINX- вверх.


    2022-01-26T10:22:03.479463450Z nginx | 2022/01/26 10:22:03 [информация] 29#29: *2245 epoll_wait() сообщил, что клиент преждевременно закрыл соединение, поэтому восходящее соединение также закрывается при отправке запроса восходящему, клиент: 169.254.130.1, сервер: xxxxx .com, запрос: «GET /api/v1/office-hours/ HTTP/1.1», восходящий поток: «http://127.0.0.1:8000/api/v1/office-hours/», хост: «xxxxx.com ", реферер: "https://xxxx.vercel.app/"
    2022-01-26T10:22:03.514362267Z nginx | 169.254.130.1 - - [26 января/2022:10:22:03 +0000] "GET /api/v1/office-hours/ HTTP/1.1" 499 0 "https://xxxx.vercel.app/" " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/97.0.4692.99 Safari/537.36"
     
    2022-01-26T10:23:03.513182059Z nginx | 2022/01/26 10:23:02 [информация] 29#29: *2247 epoll_wait() сообщил, что клиент преждевременно закрыл соединение, поэтому восходящее соединение также закрывается при отправке запроса восходящему, клиент: 169.254.130.1, сервер: xxxxx .com, запрос: «GET /api/v1/office-hours/ HTTP/1.1», восходящий поток: «http://127.0.0.1:8000/api/v1/office-hours/», хост: «xxxxx.com ", реферер: "https://xxxx.vercel.app/"
    2022-01-26T10:23:03.513238060Z nginx | 169.254.130.1 - - [26 января/2022:10:23:02 +0000] "GET /api/v1/office-hours/ HTTP/1.1" 499 0 "https://xxxx.vercel.app/" " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, например Gecko) Chrome/97.0.4692.99 Safari/537.36" 

сеть | [2022-01-25 17:21:07 +0000] [15] [КРИТИЧЕСКИЙ] ТАЙМ-АУТ РАБОЧЕГО (pid:32)
2022-01-25T17:21:07.490138324Z сеть | 2022-01-25 18:21:07,487 [32mINFO [31mglogging [выход 33mWorker (pid: 32)] [34mgunicorn.error.info:264[0m
2022-01-25T17:21:07.490220225Z nginx | 25.01.2022, 17:21:07 [ошибка] 25#25: *930 вышестоящее соединение преждевременно закрыто при чтении заголовка ответа от восходящего потока, клиент: 169.254.130.1, сервер: xxxx.com, запрос: «GET /api/v1 /cms/content/ HTTP/1.1", восходящий поток: "http://127.0.0.1:8000/api/v1/cms/content/", хост: "xxxx.com"
2022-01-25T17:21:07.490875232Z nginx | 169.254.130.1 - - [25 января/2022:17:21:07 +0000] "GET /api/v1/cms/content/ HTTP/1.1" 502 158 "-" "axios/0.18.1"
2022-01-25T17:21:07.490892833Z nginx | 2022/01/25 17:21:07 [информация] 25#25: *930 клиент 169.254.130.1 закрыто соединение проверки активности
2022-01-25T17:21:08.673367528Z сеть | [2022-01-25 17:21:08 +0000] [15] [ПРЕДУПРЕЖДЕНИЕ] Рабочий процесс с pid 32 был завершен из-за сигнала 9
2022-01-25T17:21:08.679932505Z сеть | [2022-01-25 17:21:08 +0000] [43] [INFO] Загрузка рабочего процесса с pid: 43

это мой nginx.conf

#пользователь nginx;
рабочие_процессы 2; # Установите количество ядер ЦП, 2 ядра в плане Azure P1v3.

error_log /var/log/nginx/error.log отладка;
pid /var/run/nginx.pid;


События {
    worker_connections 1024;
}


http {
    включить /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$статус $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    журнал_доступа /var/log/nginx/access.log основной;

    отправить файл включен;
    #tcp_npush включен;

    keepalive_timeout 65;

    #gzip включен;

    включить /etc/nginx/conf.d/*.conf;
}

это мой default.conf

сервер {
слушать 80 default_server;

error_log /dev/stdout информация;
журнал_доступа /dev/stdout;

client_max_body_size 100M;


местоположение/статический {
    корень /var/app/ui/сборка;
}

местоположение / сайт-статический {
    корень /вар;
}

местоположение / СМИ {
    корень /вар;
}

место расположения / {
    корень /var/app/ui/сборка; # сначала попробуйте отреагировать на каталог сборки, если файл не существует, направьте запросы в приложение django
    try_files $uri $uri/index.html $uri.html @app;
}

местоположение @приложение {
    proxy_set_header Хост $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto "https"; # предполагается, что https уже завершен балансировщиком нагрузки перед нами

    прокси_пароль http://127.0.0.1:8000;
    proxy_read_timeout 300;
    прокси_буферизация выключена;
}

}

Рейтинг:1
флаг us

Вам нужно отладить ваше приложение, почему оно так долго не отвечает.

Существует одна минутная задержка между отправкой nginx восходящего запроса и прекращением ожидания ответа.

nginx может подключаться к вышестоящему приложению через TCP, он может отправлять HTTP-запрос. Однако приложение не отправляет ответ до истечения времени ожидания nginx.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.