Sziasztok!
Egy felhasználókat szimuláló teszteszközön dolgozunk. Egy évek óta működő, bevált, folyamatosan fejlesztett, elég összetett, belső céges megoldásról van szó. A felhasználók szimulálása hálózati forgalom generálását jelenti.
A legfrissebb use case a következő feltételeket tartalmazza:
- 50,000 felhasználó szimulálása egyedi IPv6 címmel
- 4 network namespace (4x12500 IPv6 cím)
- TCP transzport
- IPsec
Ha bármelyik feltételen lazítok (pl. IPv6 helyett IPv4, vagy nem kell IPsec, vagy UDP-t használok TCP helyett) minden kiválóan működik.
A fenti feltételek esetén körülbelül 4x3000 felhasználó elindítása után (105) "No buffer space available" hibaüzenetek jönnek vissza akkor, akkor, amikor IPsec-es üzenetet akarok kiküldeni az adott felhasználóval.
A gyári Ubuntu 12.04-hez képest az alábbi beállításokat szoktam elvégezni:
net.ipv4.ip_local_port_range = 1024 7999
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
net.ipv4.tcp_rmem = 10240 87380 12582912
net.ipv4.tcp_wmem = 10240 87380 12582912
net.ipv6.route.max_size = 8388608
net.ipv6.xfrm6_gc_thresh = 8388608
Ha nem szórom szét a felhasználókat network namespace-ekre, akkor ezt a hibaüzenetet elő tudom idézni a net.ipv6.xfrm6_gc_thresh lejjebb vételével.
3.2.0 és 3.11.0 kernelekkel próbálkoztam.
Van valami ötletetek, hogy mi okozhatja ezt a hibát?
Köszönettel: Sics
- 2344 megtekintés
Hozzászólások
A szerver vagy a kliens oldalon fogyhat el valami?
- A hozzászóláshoz be kell jelentkezni
A kliens oldalon fogy el valamilyen buffer.
- A hozzászóláshoz be kell jelentkezni
> Van valami ötletetek, hogy mi okozhatja ezt a hibát?
Csak találgatni tudok: elfogyott a kernel erre fordítható memóriája. Bizonyára lehet növelni. (Megj: gyenge pontja a mesének, hogy a kernel objektumai sosem virtuális memóriában vannak, hanem fizikaiban. (Hacsak nem fejlesztettek azóta, hogy ezt hallottam.))
- A hozzászóláshoz be kell jelentkezni
Igen, odáig én is eljutottam, hogy növeleni kellene a bufferméretet. De sajnos nem találtam releváns sysctl-t.
Ami érdekes, hogy namespace-ek nélkül "ömlesztve" működik a dolog, és a net.ipv6.xfrm6_gc_thresh csökkentésével elő tudom idézni a hibaüzenetet. Namespace-ekkel viszont nem tudom olyan magasra állítani ezt a paramétert, hogy jó legyen.
Köszi, üdv.: Sics
- A hozzászóláshoz be kell jelentkezni
3.16.0 kernellel nem jön a hiba. Ez részemről elfogadható megoldás. :-)
- A hozzászóláshoz be kell jelentkezni