Hálózati beállítások optimalizálása (TCP sysctl-ek, egyebek)

Fórumok

Hálózati beállítások optimalizálása (TCP sysctl-ek, egyebek)

Hozzászólások

Sziasztok!

Adott két szerver, proxyként üzemelnek, egyik másiknak parent-je (vírusszűrő), és az a gond, hogy nagy terhelésnél (1-2 ezer felhasználó) drasztikusan esik le néha a teljesítmény... Ilyenkor azt látni, hogy ezrével sorakoznak az olyan kapcsolatok a két gép közt, amelyek TIME_WAIT vagy CLOSE_WAIT státuszban vannak. Az a kérdés, hogy akinek van ezirányú tapasztalata, adjon már némi támpontot, hogy lehetne ezen segíteni. Pl hogy ne legyenek ilyen sokáig ebben a státuszban ezek a portok, stb...
Az tisztán látszik, hogy vhol itt van a szűk keresztmetszet, mert nem dolgozzák magukat halálra a gépek, ilyen esetekben sem megy nagyon 20% fölé a terhelés...

Köszi a segítséget előre is.

[quote:b599834fc2="cheeky"]Sziasztok!

Adott két szerver

Linux? :)

[quote:363afe73e2="zwei"][quote:363afe73e2="cheeky"]Sziasztok!
Adott két szerver

Linux? :)

yep. bocs... :)

[quote:b55a8e491f="cheeky"]
...
Ilyenkor azt látni, hogy ezrével sorakoznak az olyan kapcsolatok a két gép közt, amelyek TIME_WAIT vagy CLOSE_WAIT státuszban vannak. Az a kérdés, hogy akinek van ezirányú tapasztalata, adjon már némi támpontot, hogy lehetne ezen segíteni. Pl hogy ne legyenek ilyen sokáig ebben a státuszban ezek a portok, stb...

echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle

vagy

echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse

Misi

[quote:b328777cc1="nym"]
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle

vagy

echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse

Misi

Wow... El is mondod, ez mit csinál pontosabban? Csak hogy ne csak birka legyek, hanem okosodjak is... ;)
Meg így legalább a többiek is tanul6nak a dologból...

[quote:c675cb2361="cheeky"][quote:c675cb2361="zwei"][quote:c675cb2361="cheeky"]Sziasztok!
Adott két szerver

Linux? :)

yep. bocs... :)

Énvagyok a hülye, ez a Linux-haldó topic. :oops:

Ha jól tudom a TIME_WAIT-nek és a CLOSE_WAIT-nek alapból 2 perces timeoutja van.

A TIME_WAIT a kernel forrásban a
/usr/src/linux/include/net/tcp.h; fájlban
a TCP_TIMEWAIT_LEN -ben van definiálva.

A problémádat esetleg ez is megoldhatja:
echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse

Ez azt eredményezi, hogy bizonyos esetekben a TIME_WAIT állapotban levő socketeket új kapcsolatoknál hasznosítja a szerver.
ugyanígy a tcp_tw_recycle-vel is próbálkozhatsz, de ez okozhat gondokat, ha NATolsz is a szerverrel.

Z.

[quote:a34d806c04="cheeky"][quote:a34d806c04="nym"]
echo "1" > /proc/sys/net/ipv4/tcp_tw_recycle

vagy

echo "1" > /proc/sys/net/ipv4/tcp_tw_reuse

Misi

Wow... El is mondod, ez mit csinál pontosabban? Csak hogy ne csak birka legyek, hanem okosodjak is... ;)
Meg így legalább a többiek is tanul6nak a dologból...

a tcp_tw_recycle -nevéből adódóan- a TIME_WAIT állapotban levő socketek újrahasznosítását gyorsítja fel. Ha NAT-ol is a szerver, akkor okozhat gondokat.

ennek a doksinak
http://www.redbooks.ibm.com/redpapers/pdfs/redp3862.pdf
a hálózati tuning részét ajánlom

Köszönöm mindenkinek a segítséget, mint kiderült, a legtöbbet tényleg a TCP_TW_REUSE és a TCP_TW_RECYCLE segített, de azért egyebekkel sem ártott eljátszani.

Az eredmény sysctl.conf-ban kifejezve :D :
[code:1:850401b96d]vm/min_free_kbytes = 4096
net/ipv4/conf/all/rp_filter = 1
net/ipv4/ip_local_port_range = 1024 65000
net/ipv4/tcp_fin_timeout = 25
net/ipv4/tcp_ecn = 1
net/ipv4/tcp_keepalive_time = 3600
net/ipv4/tcp_syncookies = 1
net/ipv4/icmp_echo_ignore_broadcasts = 1
net/ipv4/icmp_ignore_bogus_error_responses = 1
net/ipv4/tcp_tw_reuse = 1
net/ipv4/tcp_tw_recycle = 1[/code:1:850401b96d]
Illetve még az alábbiak, de állítólag ezek elég veszélyesek, mert többeknél túl nagy CPU overhead-et okoztak, szerencsére nem ezt tapasztaltam:
[code:1:850401b96d]net/ipv4/tcp_rmem = 4096 25165824 25165824
net/core/rmem_max = 25165824
net/core/rmem_default = 25165824
net/ipv4/tcp_wmem = 4096 65536 25165824
net/core/wmem_max = 25165824
net/core/wmem_default = 65536
net/core/optmem_max = 25165824[/code:1:850401b96d]

A számok pedig: az eredeti állapotban 2-3 ezer TIME_WAIT-es port volt az átlag a cache proxyn, és 4-5 ezer a víruskergetőn, ez leesett 500-600, illetve 50-70 közé, azonos sorrendben. Brutális.
A CPU terhelés is egyenletesebben oszlik meg, a hálózati válaszidők is sokkal jobbak, szóval sokat javult a helyzet. Még1x köszönet mindenkinek!