1 заметка с тегом

tcp

Настройка Linux — Протокол TCP

29 августа, 11:42

При высоких нагрузках на сервер, нужно настроить параметры системы

Параметр timeout_timewait

Значение timeout_timewait определяет время, которое должно пройти прежде чем TCP/IP сможет освободить завершенное соединение и повторно использовать его ресурсы.

Этот интервал между завершением и освобождением соединения называется состоянием TIME_WAIT или состоянием двойного максимального срока жизни сегмента (2MSL). На протяжении этого периода времени повторно открыть соединение с клиентом и сервером легче, чем установить новое соединение.

При уменьшения значения этого параметра TCP/IP может быстрее высвобождать завершенные соединения и предоставлять больше ресурсов для новых соединений. Настройте этот параметр если выполняемому приложению требуется быстрое высвобождение, создание новых соединений или настройка в связи с низкой производительностью, вызванной наличием нескольких соединений в состоянии TIME_WAIT.

Минимальное рекомендуемое значение равно 30 секундам. С помощью описанной ниже процедуры можно просмотреть или изменить это значение.


cat /proc/sys/net/ipv4/tcp_fin_timeout // просмотр значения по умолчанию
echo 60 > /proc/sys/net/ipv4/tcp_fin_timeout // установили 60 секунд


Незавершенное соединение

Может потребоваться увеличить резервные значения соединения для обработки всплеска входящих запросов на установку соединения. При одновременном получении нескольких запросов, большее значение увеличит число ожидающих соединений, которые могут быть поддержаны, что приведет к снижению сбоев соединений.

С помощью описанной ниже процедуры можно просмотреть или изменить это значение. где ЧИСЛО — является значением, превышающим максимальное число предполагаемых запросов на установление соединения.


cat /proc/sys/net/core/netdev_max_backlog
cat /proc/sys/net/core/somaxconn

echo ЧИСЛО > /proc/sys/net/core/netdev_max_backlog
echo ЧИСЛО > /proc/sys/net/core/somaxconn


Параметр tcp_keepalive_time

Значение tcp_keepalive_time контролирует частоту попыток TCP/IP проверить состояние простаивающего соединения. Если за указанное время деятельность отсутствует, будет отправлен контрольный пакет. Если сеть в порядке и партнер активен, то он отправит ответ.

Если вам требуется более оперативно узнавать о потере партнера, уменьшите это значение. Если простаивающие соединения с продолжительными периодами бездействия являются обычным явлением и потеря партнера происходит нечасто, можно увеличить это значение для снижения дополнительной нагрузки.

По умолчанию Linux отправляет контрольный пакет при отсутствии активности в простаивающем соединении дольше, чем 7 200 секунд (2 часа). Зачастую более предпочтительным является значение 1 800 секунд, позволяющее обнаруживать половину закрытых соединений за 30 минут.

С помощью описанной ниже процедуры можно просмотреть или изменить это значение.


cat /proc/sys/net/ipv4/tcp_keepalive_time
echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time // 300 сек


Параметр tcp_keepalive_intvl

Значение tcp_keepalive_intvl определяет частоту отправки TCP/IP контрольных пакетов при отсутствии ответа на них от партнера. Соединение будет разорвано после того, как число последовательно отправленных контрольных пакетов, оставшихся без ответа, превысит значение tcp_keepalive_probes.

Если время ожидания ответа является достаточно большим, следует увеличить это значение для снижения дополнительной нагрузки. Если вам требуется снизить время, затраченное на проверку потери партнера, уменьшите это значение или значение tcp_keepalive_probes.

По умолчанию Linux ждет получения ответа на отправленный контрольный пакет 75 секунд перед его повторной отправкой. Зачастую оптимальным значением является 15 секунд, позволяющее быстрее определить потерю партнера.

С помощью описанной ниже процедуры можно просмотреть или изменить это значение.


cat /proc/sys/net/ipv4/tcp_keepalive_intvl
echo 60 > /proc/sys/net/ipv4/tcp_keepalive_intvl // 60 сек


Параметр tcp_keepalive_probes

Значение tcp_keepalive_probes определяет число повторных отправок TCP/IP неподтвержденного контрольного пакета по имеющемуся соединению. Если надежность сети низкая, рекомендуется увеличить это значение для повышения эффективности соединений. Если качество сети высоко имеет смысл уменьшить время проверки потери партнера.

По умолчанию Linux отправляет 9 контрольных пакетов перед завершением соединения. Зачастую оптимальным значением является 5 повторов, позволяющее быстрее определить потерю партнера.

С помощью описанной ниже процедуры можно просмотреть или изменить это значение.


cat /proc/sys/net/ipv4/tcp_keepalive_probes
echo 3 > /proc/sys/net/ipv4/tcp_keepalive_probes // 3 повтора отправки контрольных пакетов.


Данные настройки сделают Ваш сервер более стойким.