NGINX: ошибка истечения времени ожидания в восходящем потоке при увеличении трафика

#nginx #networking

Вопрос:

У меня есть API Flask, когда мы вызываем этот API, он удаляет данные с нескольких веб-сайтов и возвращает очищенные данные в качестве ответа.

Я следовал этому руководству по настройке API: https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04

Обычно он работает нормально, но когда я вызываю его из нескольких кластеров одновременно, он возвращает ошибку тайм-аута 504.

 upstream timed out (110: Connection timed out) while reading response header from upstream, upstream: "http://unix:/home/api/scrapedata.sock/data/?country=INamp;query=abcd"
 

Если я перестану вызывать API из некоторых кластеров (это означает меньший трафик), он снова будет работать нормально.

Мое nginx.conf досье:

 user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##
 access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        ##
        # Gzip Settings
        ##

        gzip on;


        ##
        # Virtual Host Configs
        ##
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}
 

Если я выполню top команду в терминале

Я вижу, что Memory Free: 29GB CPU Utilization : 5%

У меня есть одна сетевая карта, подключенная к серверу.

lspci | grep -i eth

Выход:

00:12.0 Ethernet controller: Red Hat, Inc. Virtio network device

Мое первое предположение заключается в том, что, возможно, сетевое устройство (сетевой адаптер) перегружено?

Что может вызвать эту проблему?

Как исследовать это дальше?

Any possible solutions?