502 при свободном CPU — ещё не перегрузка backend. Разберём отказ: reverse proxy открывает отдельное TCP-соединение на каждый запрос к upstream и первым закрывает его. TIME_WAIT копится на исходящей стороне proxy. Для одного исходного IP и одного IP:port назначения заканчиваются доступные комбинации портов. connect() возвращает EADDRNOTAVAIL, SYN не выходит. Увеличивать backend в этот момент — оплачивать ложный диагноз. Проверка в network namespace proxy: ss -tan state time-wait dst 10.0.0.10:8080, затем sysctl net.ipv4.ip_local_port_range net.ipv4.tcp_tw_reuse. Сопоставьте число TIME_WAIT к этому upstream, частоту новых соединений и ошибки connect(). nstat -az TcpExtTW показывает накопленный счётчик переходов в TIME_WAIT, а не текущее количество сокетов. Одного глобального графика TIME_WAIT для диагноза недостаточно. При tcp_tw_reuse=2 повторное использование разрешено только для loopback. Значение 1 расширяет область применения, но не отменяет проверки безопасности TCP, включая услов...

502 при свободном CPU — ещё не перегрузка backend. Разберём отказ: reverse proxy открывает отдельное TCP-соединение на каждый запрос к upstream и первым закрывает его | Сетка — социальная сеть от hh.ru