URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 4163
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Оптимизация TCP/IP стека в Linux для нагруженного сервера."

Отправлено auto_tips , 23-Авг-04 23:41 
/usr/src/linux/Documenation/filesystems/proc.txt
/usr/src/linux/Documenation/networking/ip-sysctl.txt
Далее в скобках указаны значения по умолчанию для 2.2.x/2.4.x ядер.
Если ядро собрано с CONFIG_SYNCOOKIES для защиты от syn флуда (net.ipv4.tcpsyn_cookies)
   echo 1 > /proc/sys/net/ipv4/tcp_syncookies #(0/0)
Увеличиваем размер backlog очереди (аналог sysctl net.ipv4.tcp_max_syn_backlog).  
   echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog  #(128/1024)
Число начальных SYN и SYNACK пересылок для TCP соединения (лучше не трогать).
   echo 4 > /proc/sys/net/ipv4/tcp_synack_retries #(x/5)
   echo 4 > /proc/sys/net/ipv4/tcp_syn_retries #(10/5)
Какие порты использовать в качестве локальных TCP и UDP портов (sysctl net.ipv4.ip_local_port_range).
   echo "16384 61000" > /proc/sys/net/ipv4/ip_local_port_range #(1024 4999/32768 61000)
Сколько секунд ожидать приема FIN до полного закрытия сокета.
   echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout #(180/60)
Как часто посылать сообщение о поддержании keep alive соединения.
   echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time #(7200/7200)
Сколько пакетов проверки keepalive посылать, прежде чем соединение будет закрыто.
   echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes #(9/9)
Запрещаем TCP window scaling (net.ipv4.tcp_window_scaling)
   echo 0 > /proc/sys/net/ipv4/tcp_window_scaling #(1/1)
Запрещаем selective acknowledgements, RFC2018 (net.ipv4.tcp_sack).
   echo 0 > /proc/sys/net/ipv4/tcp_sack #(1/1)
Запрещаем TCP timestamps, RFC1323 (net.ipv4.tcp_timestamps)
   echo 0  > /proc/sys/net/ipv4/tcp_timestamps #(1/1)
Увеличиваем размер буфера для приема и отправки данных через сокеты.
   echo 1048576 > /proc/sys/net/core/rmem_max #(65535/autotune)
   echo 1048576 > /proc/sys/net/core/rmem_default #(65535/autotune)
   echo 1048576 > /proc/sys/net/core/wmem_max #(65535/autotune)
   echo 1048576 > /proc/sys/net/core/wmem_default #(65535/autotune)
Если не требуется форвадинг пакетов (машина не рутер) выключаем.
(net.ipv4.ip_forward и  net.ipv4.conf.all.forwarding)
   echo 0 /proc/sys/net/ipv4/ip_forward #(0/0)
   echo 0 /proc/sys/net/ipv4/conf/all/forwarding #(0/0)
Через какое время убивать соединеие закрытое на нашей стороне (net.ipv4.tcp_orphan_retries)
   echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries #(x/7)


URL:
Обсуждается: http://www.opennet.me/tips/info/273.shtml


Содержание

Сообщения в этом обсуждении
"Оптимизация TCPIP стека в Linux для нагруженного сервера."
Отправлено Michael Shigorin , 23-Авг-04 23:41 
А за что порубили TCP window scaling, selective ACKs и TCP timestamps?  Понятно, что сетевая прокачка при этом в среднем ухудшится и нагрузка на сервер снизится, но тот ли это результат, которого хотелось добиться?

Тогда уж проще грубо лимитировать полосу или SYN rate.


"Оптимизация TCP/IP стека в Linux для нагруженного сервера."
Отправлено Michael Shigorin , 24-Авг-04 00:58 
Хотя... _нагрузку_-то, конечно, оно несколько убавит.  But still

"Оптимизация TCP/IP стека в Linux для нагруженного сервера."
Отправлено Ekzorcist , 26-Июл-10 12:39 
##
Число начальных SYN и SYNACK пересылок для TCP соединения (лучше не трогать).
   echo 4 > /proc/sys/net/ipv4/tcp_synack_retries #(x/5)
##

Под высокие нагрузки (и даже под DDoS)
net.ipv4.tcp_synack_retries = 2 - пойдет очень хорошо (CentOS release 5.3 (Final), 2.6.18-128.1.16.el5 )

##
Сколько секунд ожидать приема FIN до полного закрытия сокета.
   echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout #(180/60)
##
Понижал до 15. Работает как часы и при этом значительно снижается нагрузка за счет уменьшения полузакрытых коннектов.

P.S. То, что испытывал:
http://mega-admin.com/showthread.php?t=42