Задать вопрос
Sergiy_Hanzhela
@Sergiy_Hanzhela
Начинающий разработчик!

Как победить upstream timed out (110: Connection timed out)?

Доброго времени суток!
Подскажите как можно победить вот такое
021/04/06 12:27:51 [error] 18610#18610: *38741 upstream timed out (110: Connection timed out) while reading response header from upstream, client: 46.98.107.68, server: ****.com.ua, request: "GET /shop/api/****/products/ HTTP/1.1", upstream: "uwsgi://unix:///home/********.uwsgi/sock", host: ********"

Есть связка Django+ Nginx + Uwsgi в качестве Rest используется DRF
Есть некий запрос к бд от 1С в результате которого на 1С улетает пакет информации сейчас в БД более 20К записей
объект сериализуется через viewsets.ModelViewSet сам бек-енд работает нормально если уменьшить количество обрабатываемых записей до 15К то получается 54-55сек и все отрабатывает если больше 1 мин то идет 504 ошибка
Перелопатил много инфы везде почти одно и тоже таймеры:(

вот мои установки!
location / {
        uwsgi_pass    unix:///*******/dj/*****.com.ua/.uwsgi/sock;
        include uwsgi_params;
        client_body_timeout 1800s;
        uwsgi_connect_timeout 15s;
        uwsgi_read_timeout 1800s;
        uwsgi_send_timeout 1800s;
        proxy_send_timeout 900s;
        proxy_read_timeout 900s;
        send_timeout 600;        
    }

но все равно соединение рвется через 60сек

вот еще
[uwsgi]


log-format = {VSZ: %(vsz)/%(vszM)M}{RSS: %(rss)/%(vszM)M} [pid: %(pid)|app: -|req: -/-] %(addr) (%(user)) {%(vars) vars in %(pktsize) bytes} [%(ctime)] %(method) %(uri) "%(proto)" %(status) %(rsize) bytes in %(msecs) msecs %(headers) headers in %(hsize) bytes (%(switches) switches on core %(core)) %(var.HTTP_X_REQUEST_ID)

stats = /home/%c/dj/%n/.uwsgi/stats.sock

socket = /home/%c/dj/%n/.uwsgi/sock
chmod-socket = 660
chgrp-socket = www-data

workers = 4         # maximum number of workers
cheaper-algo = spare2
cheaper = 2           # tries to keep 2 idle workers
cheaper-initial = 2   # starts with minimal workers
cheaper-step = 1      # spawn at most 2 workers at once
cheaper-idle = 10     # seconds
enable-threads = true

uid = %c
gid = www-data

env = LC_ALL=ru_RU.utf8

wsgi-file = /home/%c/dj/%n/code/src/project_src/wsgi.py

chdir = /home/%c/dj/%n/code/src
home = /home/%c/dj/%n/.venv

master=true
vacuum = true
memory-report = true

evil-reload-on-rss = 1024
harakiri = 1200
max-requests = 5000 
buffer-size = 65535 
post-buffering = 8192

touch-reload = %(wsgi-file)
daemonize2 = /home/%c/dj/%n/.uwsgi/log
pidfile2 = /home/%c/dj/%n/.uwsgi/pid

# disable IOError: write error, in Sentry
ignore-sigpipe = true
ignore-write-errors = true
disable-write-exception = true
  • Вопрос задан
  • 4451 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
Viji
@Viji
DevOps Engineer
посмотри и увеличь timeout директивы для nginx, думаю проблема там - nginx.org/en/docs/http/ngx_http_proxy_module.html#...

кроме того не совсем ясен information flow - ты обрабатываешь 1C базу с помощью Django Rest? Как идет запрос?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы