Похоже, у нас есть куча TCP-соединений на загруженном веб-сервере, это результат команды ss -s:
Total: 366 (kernel 1037)
TCP: 72108 (estab 130, closed 71964, orphaned 0, synrecv 0, timewait 71962/0), ports 46158
Transport Total IP IPv6
* 1037 - -
RAW 0 0 0
UDP 12 8 4
TCP 144 111 33
INET 156 119 37
FRAG 0 0 0
Как мне лучше всего настроить параметры TCP на этом сервере, чтобы предотвратить проблемы / максимизировать производительность? Недавно я увеличил net / ipv4 / ip_local_port_range со значения по умолчанию до «1024 65000»
Стек TCP / IP в Linux уже очень оптимизирован и обычно ничего не требуется. Например, установка диапазона локальных портов для получения нескольких дополнительных портов почти наверняка не требуется.
С точки зрения времени / ожидания - это плохо, это просто часть использования tcp. Если вы действительно хотите, чтобы в этом состоянии было меньше портов, измените значения tcp_fin_timeout или tcp_keepalive. Хотя вам действительно не следует изменять эти значения, если это действительно не нужно по какой-либо причине.
Что касается исчерпания портов, каждый порт привязан к порту источника и порта назначения. Скорее всего, у вас не закончатся пары источник / назначение, если вы не выполните что-то вроде nat.
В ответ на ваш комментарий о соединения сбрасываются при использовании memcached; Вы можете увеличить количество рабочих потоков и длину очереди невыполненных работ. Проблема, скорее всего, связана с memcached, чем с количеством доступных портов.