PowerScale: Noder delas eftersom lldpd inte längre skickar pulsslag till backend Dell-switchen

Summary: I den här artikeln beskrivs ett problem med _lldpd process som förbrukar det maximala tillåtna minnet och inte längre skickar LLDP-paket (Link Layer Discovery Protocol) till serverdelsväxlar. ...

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Symptoms

VARNING!
  • Vi rekommenderar inte att du utför en OneFS-uppgradering till de berörda versionerna (9.5.0.0 till 9.5.0.5)

  • RPS eller kunden MÅSTE starta om alla lldpd-processer innan en OneFS-uppgradering utförs på en berörd version (exempelvis uppgradering från 9.5.0.1 till 9.5.0.7). Följ alternativ 2 i upplösning.


Det finns en minnesläcka i lldpd och en nod kan delas om processen har förbrukat sitt maximalt tillåtna minne (1 GB). När noden har förbrukat sitt tillåtna minne skickar den inte längre LLDP-paket till backend-switcharna. En PowerScale Dell-kvalificerad backend-switch som kör SmartFabric Services (SFS) måste ta emot LLDP-paket (heartbeat) från en nod. Om tre pulsslag missas tas switchporten bort från det dedikerade virtuella nätverket. Sedan kan en nod inte längre kommunicera med klustret via den sökvägen.

Om ett kluster ska uppgraderas startas noderna om i följd och varje omstart tar flera länkar ned och säkerhetskopierar. Var och en av dessa länkhändelser från omstarterna ökar långsamt storleken på lldpd vmem-användningen. Det är mycket troligt att noder delas under en uppgradering om processen inte har startats om nyligen.

Det här problemet kan uppstå i följande scenarier:

  • OneFS-uppgraderingar
  • Normal klusterdrift

Den aktuella vmem-användningen kan ses med följande kommando, där ett RSS-värde (MAXIMUM Resident Set Size) är 1 048 576 kB. RSS är den sjätte kolumnen med information från PS (till vänster om " - ") utdata (exklusive nodnamnet).

# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'

 

Obs! "isi_for_array" fungerar inte på noder som är OFFLINE. En direktanslutning till OFFLINE-noder krävs för att samla in ovanstående information.

 


Exempel på utdata nedan:

cl950x-1# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
cl950x-1: _lldpd  1483   0.0  3.2 273804 262168  -  S     6Aug23     74:25.14 lldpd: no neighbor. (lldpd)
cl950x-1: _lldpd  1492   0.0  3.2 273804 262168  -  S     6Aug23     74:31.73 lldpd: no neighbor. (lldpd)
cl950x-2: _lldpd  1483   0.0  2.9 251068 238632  -  S    14Aug23     66:19.68 lldpd: no neighbor. (lldpd)
cl950x-2: _lldpd  1492   0.0  2.9 251068 238632  -  S    14Aug23     66:24.72 lldpd: no neighbor. (lldpd)
cl950x-3: _lldpd  1483   0.0  2.9 251832 239420  -  S    14Aug23     46:25.36 lldpd: no neighbor. (lldpd)
cl950x-3: _lldpd  1492   0.0  2.9 251832 239420  -  S    14Aug23     46:32.24 lldpd: no neighbor. (lldpd)
cl950x-4: _lldpd  1487   0.0  3.1 268052 256212  -  S     8Aug23     50:25.15 lldpd: no neighbor. (lldpd)
cl950x-4: _lldpd  1496   0.0  3.1 268052 256212  -  S     8Aug23     50:36.34 lldpd: no neighbor. (lldpd)
cl950x-5: _lldpd  1483   0.0  3.1 273208 261552  -  S     6Aug23     75:41.91 lldpd: no neighbor. (lldpd)
cl950x-5: _lldpd  1492   0.0  3.1 273208 261552  -  S     6Aug23     75:35.00 lldpd: no neighbor. (lldpd)
cl950x-6: _lldpd  1482   0.0  3.2 274144 262516  -  S     6Aug23     50:49.08 lldpd: no neighbor. (lldpd)
cl950x-6: _lldpd  1492   0.0  3.2 274144 262516  -  S     6Aug23     51:02.88 lldpd: no neighbor. (lldpd)
cl950x-7: _lldpd  1483   0.0  3.2 274004 262380  -  S     6Aug23     50:51.55 lldpd: no neighbor. (lldpd)
cl950x-7: _lldpd  1492   0.0  3.2 274004 262380  -  S     6Aug23     51:03.26 lldpd: no neighbor. (lldpd)
cl950x-8: _lldpd  1483   0.0  2.9 251176 238744  -  S    14Aug23     46:40.93 lldpd: no neighbor. (lldpd)
cl950x-8: _lldpd  1492   0.0  2.9 251176 238744  -  S    14Aug23     46:49.57 lldpd: no neighbor. (lldpd)
                                         ^^^^^^


Den hastighet med vilken lldpd-processen förbrukar minnet varierar beroende på flera faktorer. Detta är också orsaken till den högre minnesanvändningen än normalt under OneFS-uppgraderingar:

  • Nätverkskonfigurationsstorlek i klustret
  • Antal undernät som skapats från nätverkskonfigurationen
  • Antalet nätverkshändelser, t.ex. länk ned eller upp
  • Återkommande omstartshändelser

Hur lång tid det tar för _lldpd process att nå ett MAXIMALT tillåtet minne varierar från kluster till kluster. Man har dock upptäckt att det finns ett samband mellan nätverkskonfigurationens storlek och tiden till fel. Det innebär att ju fler groupnets, undernät och pooler som konfigureras, desto tidigare kan det ske.  

Cause

I 9.5 uppdaterades lldpd och innehåller en minnesläcka.

Resolution

VARNING

  • Vi rekommenderar inte att du utför en OneFS-uppgradering till de berörda versionerna (9.5.0.0 till 9.5.0.5)

  • RPS eller kunden MÅSTE starta om alla lldpd-processer innan en OneFS-uppgradering utförs på en berörd version (exempelvis uppgradering från 9.5.0.1 till 9.5.0.7). Följ alternativ 2 i upplösning.

Det finns flera alternativ för att lösa eller kringgå problemet beroende på ditt aktuella scenario:

  1. Uppgradera OneFS till 9.5.0.6 och senare
    • Observera varningsmeddelandena som beskrivs i artikeln om att starta om lldpd före en uppgradering från de berörda versionerna.
  2. En tillfällig lösning slutförs omedelbart och startar om lldpd-processer. Detta kräver manuella åtgärder genom att starta om processen i klustret:
    • # killall lldpd
  3. En tillfällig lösning efter att problemet har lösts genom att omedelbart starta om lldpd-processer som är över 500 MB:
    • # isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''
  4. En tillfällig lösning När problemet har lösts (följande kommando är detsamma som föregående kommando) kan detta köras i en skärmsession för att utföra kontrollen var 1200:e sekund.
    • # while true; do isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''; sleep 1200; done
Article Properties
Article Number: 000219439
Article Type: Solution
Last Modified: 19 May 2025
Version:  7
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.