Назад | Перейти на главную страницу

Настройка Linux TCP на большое количество TIME_WAIT

Похоже, у нас есть куча 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, чем с количеством доступных портов.