03:12 ночи reverse proxy начал сыпать в лог Cannot assign requested address, хотя CPU держался на 18%, а healthcheck оставался зелёным. Поверхностный мониторинг обвинил сеть и upstream, но ss показал 184000 сокетов в TIME_WAIT и ноль свободных эфемерных портов через 40 секунд после пика. Диагностика заняла три команды: ss -tan state time-wait | wc -l, cat /proc/sys/net/ipv4/ip_local_port_range и nstat -az TcpExtTCPTimeWaitOverflow. Диапазон был 32768 60999, то есть всего 28232 порта на один исходящий IP, а каждый короткий запрос к upstream оставлял сокет в TIME_WAIT на 60 секунд. tcp_tw_reuse стоял в 1, но peer не отдавал TCP timestamps, и PAWS отклонял переиспользование. Итог: reuse работает только там, где есть timestamps и нет строгой проверки PAWS, а на NAT и старых балансировщиках это условие ломается первым. Вылечили архитектурой: расширили диапазон портов, добавили исходящие IP, удержали keepalive к upstream и сократили короткие соединения вместо слепой правки tcp_fin_timeout. П...