Änderungen

Zur Navigation springen Zur Suche springen

Server:Fehlermeldung "kernel: Neighbour table overflow"

127 Bytes entfernt, 13:53, 9. Apr. 2012
zeigt an, dass der ARP-Cache des Kernels zu klein ist, um alle MAC-Adressen zu nicht gerouteten IP-Adressen zu speichern (zu cachen).
= Der ARP-Cache (die neighbour table) des Linux Kernels =
Der ARP-Cache des Linux Kernels (auch ''neighbour table'' genannt) speichert zu jeder IP-Adresse, die nicht geroutet wird (also in einem Subnetz liegt, das auf einer Netzwerkkarte des Servers konfiguriert ist), eine MAC-Adresse. Dies ist nötig, damit Datenpakete, die nicht zum Router geschickt werden, direkt via Ethernet-Frames übertragen werden können. Logischerweise wird auch die IP-Adresse des Routers (Gateways) auch im ARP-Cache gespeichert.
Müssen zum selben Zeitpunkt mehr IP-Adress-zu-MAC-Adress-Einträge vom Linux Kernel gecacht werden, als der ARP-Cache groß ist, muss der Kernel für '''jedes''' zu versendende Datenpaket einen ARP-Broadcast-Request im Ethernet verschicken, was zu erheblichen Performance-Einbußen und zu Beeinträchtigungen des gesamten Subnetzes führen kann.
Die Größe des ARP-Caches wird über drei ''sysctl''-Variablen gesteuert:
Die Standard-Werte sind
* bei IPv4
<pre>
net.ipv4.neigh.default.gc_thresh1 = 128
net.ipv4.neigh.default.gc_thresh2 = 512
net.ipv4.neigh.default.gc_thresh3 = 1024</pre>* bei IPv6<pre>net.ipv6.neigh.default.gc_thresh1 = 128
net.ipv6.neigh.default.gc_thresh2 = 512
net.ipv6.neigh.default.gc_thresh3 = 1024</pre>
= Beheben (ARP-Cache / neighbour table vergrößern) =
== Größe des ARP-Cache bestimmen (vergrößen, einstellen) ==
Bestimmen Sie als erstes sinnvolle Werte für die Größe Ihres ARP-Caches:
* alternativ können Sie die aktuelle Anzahl an Einträgen über <pre>$ ip neigh show</pre> bzw. <pre>$ arp -n</pre> auslesen und die benötigte Größe danach abschätzen.
'''Wichtig:''' Sie sollten die Werte in keinem Fall unnötig groß wählen, da Sie hierdurch wertvollen RAM verlieren (dies ist auch bei Systemen mit mehreren GB RAM relevant!).
Es ist ratsam, die drei Variablen wie folgt aufeinander abzustimmen:
<pre>
gc_thresh1 = 128/256/512/1024/...
gc_thresh2 = 2 * gc_thresh2gc_thresh1gc_thresh3 = 2 * thresh3gc_thresh2</pre>
== Größe des ARP-Cache setzen/festlegen ==
Setzen Sie die entsprechenden sysctl-Variablen entweder für das laufende System oder dauerhaft via <code>sysctl.conf</code>.
Wichtig: Falls Sie mit sysctl-Variablen nicht vertraut sind, finden Sie [[Server:Sysctl-Variablen (sysctl.conf)|hier weitere Informationen]]sysctl -w net.ipv4.neigh.default.gc_thresh1=256sysctl -w net.ipv4.neigh.default.gc_thresh2=1024sysctl -w net.ipv4.neigh.default.gc_thresh3=2048 sysctl -w net.ipv6.neigh.default.gc_thresh1=256sysctl -w net.ipv6.neigh.default.gc_thresh2=1024sysctl -w net.ipv6.neigh.default.gc_thresh3=2048 
[[Kategorie:Root-Server]][[Kategorie:Netzwerk (Server)]][[Kategorie:Linux (Server)]][[Kategorie:Linux Kernel (Server)]]
1.533

Bearbeitungen

Navigationsmenü