Talaltam is egy jo kis leirast a problemarol itt:
http://www.wallfire.org/misc/netfilter_conntrack_perf.txt
A dolog lenyege a kovetkezo keplet:
conntrack mem (b) = CONNTRACK_MAX * sizeof(struct ip_conntrack) + HASHSIZE * sizeof(struct list_head)
Alabbi script kis is szamolja neked, ha bator vagy es lefuttatod rootkent:
#!/bin/bash
PAGESIZE=4
echo Page size: $PAGESIZE
if [ x$1 == x ]
then CONNTMAX=`sysctl -n net.ipv4.netfilter.ip_conntrack_max`
else CONNTMAX=$1
fi
echo Max entries: $CONNTMAX
FILES=`ls -t /var/log/kern.log*`
STRUCT_IP_CONNT=`zgrep "ip_conntrack version" $FILES | awk '{print $(NF-3)}'| tail -1`
echo "IP conntrack struct size: $STRUCT_IP_CONNT"
CONNT_BUCKETS=`sysctl -n net.ipv4.netfilter.ip_conntrack_buckets`
echo "Conntrack Buckets (hash size): $CONNT_BUCKETS"
((MEMUSE=$CONNTMAX*$STRUCT_IP_CONNT+$CONNT_BUCKETS*2*$PAGESIZE))
echo "$CONNTMAX*$STRUCT_IP_CONNT+$CONNT_BUCKETS*2*$PAGESIZE"
echo "CONNTRACK_MAX * sizeof(struct ip_conntrack) + HASHSIZE * sizeof(struct list_head)"
MB=`echo scale=2\; $MEMUSE/1024/1024 | bc`
echo "Conntrack memory usage: $MB MB"
Amikor dedikalt tuzfalat (keves memoriaval) vagy csak nagy forgalmu szervert futtatsz conntrack hasznalata mellett, nem jelentektelen mennyisegu memoria fogyhat el erre a celra.
Nem is beszelve egy LVS directorrol :)
A munkahelyi gepemen maximum 13.3MB memoriat fogyaszthat. Na nem mintha valaha betelne a tabla :)
Tipp: ha megis betelne a conntrack tabla, nem biztos, hogy a meretet kell megemelni.
A net.ipv4.netfilter.ip_conntrack_tcp_timeout_established sysctl kulcsot megnezven feltunhet, hogy alapertelmezesben 5 nap a kapcsolatok timeoutja a conntrack tablabol. Ezt azert lejjebb lehet venni.
A kockazatot persze te vallalod :-D
- uid_1062 blogja
- A hozzászóláshoz be kell jelentkezni
- 2982 megtekintés
Hozzászólások
Hasonló problémával én is találkoztam az egyik szerveren, így gyorsan meg is néztem a net.ipv4.netfilter.ip_conntrack_tcp_timeout_established értékét. Sajnos a 2.4-es kernelnél még nincs ilyen sysctl kulcs. :-(
Köszi az ötletet, majd upgrade után kipróbálom, ha lesz még rá szükségem.
Üdv: Webappz
- A hozzászóláshoz be kell jelentkezni
Üdv!
Tudom, hülye kérdés, de ha beállítom ezt az értéket, az újraindításkor elveszik, így initscriptból kell mindig beállítani?
Petya
- A hozzászóláshoz be kell jelentkezni
/etc/sysctl.conf (ha van ilyened) segithet rajtad.
sysctl -p pedig be is huzza onnan az ertekeket. Igy konnyen ellenorizheto, sikerult-e amit akartal.
- A hozzászóláshoz be kell jelentkezni
Esetleg belerakhatod a /etc/rc.d/rc.local-ba már ha van ilyened :-)
http://webappz.hu
- A hozzászóláshoz be kell jelentkezni
Ez a timeout tényle érdekes, lehet lejjebb kellene venni nekem is. A többi timeout értéket is változtathatom, vagy csak a tcp established-et?
Petya
- A hozzászóláshoz be kell jelentkezni
Valtoztathatod, de ennek a legkisebb a kockazata. S ez adja a hosszan megmarado bejegyzesek tulnyomo tobbseget.
Nezz utana mit csinalsz :) Anelkul semmikeppen.
- A hozzászóláshoz be kell jelentkezni
Szia,
kipróbáltam scriptet, kijött, hogy 4096 MB, de ez vicc, mert 65535 a tábla mérete, hash 8192, és itt kb 16 MB-nak kéne lenni.
Szerinted?
Van 2 giga a gépben, és jó lenne megnövelni táblát...
Köszi,
Tom
- A hozzászóláshoz be kell jelentkezni
szerintem valami bugzik :)
ha ideirod a teljes kimenetet a scriptnek akkor megprobalom kitalalni mi a baja.
- A hozzászóláshoz be kell jelentkezni