The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Оптимизация TCP/IP стека в Linux для нагруженного сервера.
/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)
 
26.06.2002
Ключи: tcp, win, proc, subnet, tune, linux, sysctl, forward, port, ip, time, x, udp, config, window, buffer, file, coredump, timeout, fault, sync, select / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Оптимизация и тюнинг в Linux

Обсуждение [ RSS ]
  • 1, Michael Shigorin (?), 23:41, 23/08/2004 [ответить]  
  • +/
    А за что порубили TCP window scaling, selective ACKs и TCP timestamps?  Понятно, что сетевая прокачка при этом в среднем ухудшится и нагрузка на сервер снизится, но тот ли это результат, которого хотелось добиться?

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

     
  • 2, Michael Shigorin (?), 00:58, 24/08/2004 [ответить]  
  • +/
    Хотя... _нагрузку_-то, конечно, оно несколько убавит.  But still
     
  • 3, Ekzorcist (ok), 12:39, 26/07/2010 [ответить]  
  • +/
    ##
    Число начальных 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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру