Периодическое падение пропускной способности обратного прокси-сервера nginx, что это может быть?

Я нагрузочно тестирую коробку t2.micro, в которой nginx и postgrest работают в док-контейнерах. Nginx действует как прокси перед postgrest. Если я перейду прямо к апстриму (postgrest), я получу хороший график (с пиковыми значениями около 900 / об / с). Если я пройду через nginx, я получу такой график

введите описание изображения здесь

Процессор не максимально (только около 50%)

Это используемый конфиг nginx. Все, что прокомментировано, было опробовано без последствий. Я также играл со значениями worker_connections и связанных вещей. Чем может быть вызвано это периодическое падение?

    рабочий_процесс 2;

    #worker_rlimit_nofile              2048;
    События {
        #  multi_accept                    on;
        рабочий_соединения 1024;
        использовать epoll;
    }
    http {
        resolver 127.0.0.11 ipv6= выкл;
        включить mime.types;
        #tcp_nodelay                     off;
        #tcp_nopush                      on;
        вверх по течению postgrest {
            почтовый сервер:3000;
            keepalive 64;
        }
        сервер {
            слушать 80;
            имя_сервера localhost;
            кодировка utf-8;

            место / отдых / {
                default_type  application/json;
                #proxy_buffering off;
                proxy_pass http://postgrest/; # Обратный прокси к вашему PostgREST
            }
        }
    }

1 ответ

Решение

Виновником были (tcp) настройки ядра (по умолчанию). При прохождении через прокси-сервер nginx система использовала все локальные порты, затем все останавливалось (сбрасывалось), пока старые соединения tcp не могли быть полностью закрыты (они находились в time_wait в течение 60 с). Настройка этих настроек устранила проблему.

#tcp settings
net.core.somaxconn
net.ipv4.tcp_fin_timeout
net.ipv4.tcp_tw_reuse
net.ipv4.ip_local_port_range

#nginx configs
proxy_set_header  Connection "";
proxy_http_version 1.1;

В статье ниже более подробно рассказывается о том, что именно происходит, о параметрах для настройки.

https://engineering.gosquared.com/optimising-nginx-node-js-and-networking-for-heavy-workloads

Другие вопросы по тегам