PowerScale: Noder, der opdeles, da lldpd ikke længere sender hjerteslag til backend-switchen Dell-switch

Summary: I denne artikel beskrives et problem med _lldpd proces, der bruger den maksimalt tilladte hukommelse og ikke længere sender LLDP-pakker (Link Layer Discovery Protocol) til backend-switche. ...

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

ADVARSEL:
  • Det anbefales ikke at udføre en OneFS-opgradering til de berørte versioner (9.5.0.0 til 9.5.0.5)

  • RPS eller kunden SKAL genstarte alle lldpd-processer, før der udføres en OneFS-opgradering, mens du er på en berørt version (f.eks. opgradering fra 9.5.0.1 til 9.5.0.7). Følg løsningsindstillingen Mulighed 2.


Der er en hukommelseslækage i lldpd, og en node kan opdeles, hvis processen har brugt sin maksimalt tilladte hukommelse (1 GB). Når noden bruger sin tilladte hukommelse, sender den ikke længere LLDP-pakker til backend-switchene. En PowerScale Dell-kvalificeret backend-switch, der kører SmartFabric Services (SFS), skal modtage hjerteslagspakker (LLDP) fra en node. Hvis tre hjerteslag går glip af, fjernes switch-porten derefter fra sit dedikerede virtuelle netværk. Derefter kan en node ikke længere kommunikere med klyngen via denne sti.

Hvis en klynge skal opgraderes, genstartes noderne efter hinanden, og hver genstart tager flere links ned og sikkerhedskopieres. Hver af disse linkhændelser fra genstarterne øger langsomt størrelsen af brugen af lldpd vmem. Det er meget sandsynligt, at noder opdeles under en opgradering, hvis processen ikke er blevet genstartet for nylig.

Dette problem kan opstå i følgende scenarier:

  • OneFS-opgraderinger
  • Normal klyngedrift

Den aktuelle vmem-brug kan ses med følgende kommando, hvor en RSS-værdi (MAXIMUM Resident Set Size) er 1.048.576 KB. RSS er den sjette kolonne med information fra PS-output (til venstre for " - ") (eksklusive nodenavnet).

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

 

BEMÆRK: "isi_for_array" virker ikke på noder, der er OFFLINE. Der kræves en direkte forbindelse til OFFLINE-noder for at indsamle ovenstående oplysninger.

 


Eksempel på output nedenfor:

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 hastighed, hvormed lldpd-processen bruger hukommelsen, varierer på flere faktorer. Dette er også årsagen til den højere end normale stigning i hukommelsesforbruget under OneFS-opgraderinger:

  • Klyngens netværkskonfigurationsstørrelse
  • Antal undernet, der er oprettet ud fra netværkskonfigurationen
  • Antallet af netværkshændelser, f.eks. link ned eller op
  • Tilbagevendende genstartshændelser

Den tid_lldpd tager for processen at nå et MAKSIMUM tilladt hukommelsesniveau, varierer fra klynge til klynge. Det blev imidlertid opdaget, at der er en sammenhæng mellem netværkskonfigurationsstørrelse og tiden til fejl. Det betyder, at jo flere gruppenet, undernet og puljer, der er konfigureret, jo hurtigere kan det forekomme.  

Cause

I 9.5 blev lldpd opdateret og indeholder en hukommelseslækage.

Resolution

WARNING

  • Det anbefales ikke at udføre en OneFS-opgradering til de berørte versioner (9.5.0.0 til 9.5.0.5)

  • RPS eller kunden SKAL genstarte alle lldpd-processer, før der udføres en OneFS-opgradering, mens du er på en berørt version (f.eks. opgradering fra 9.5.0.1 til 9.5.0.7). Følg løsningsindstillingen Mulighed 2.

Der er flere muligheder for at løse eller løse problemet afhængigt af dit aktuelle scenarie:

  1. Opgrader OneFS til 9.5.0.6 og nyere
    • Bemærk de advarselsmeddelelser, der er beskrevet i artiklen vedrørende genstart af lldpd, før du opgraderer fra de berørte versioner.
  2. En midlertidig løsning fuldføres med det samme som genstart af lldpd-processer. Dette kræver manuel indgriben ved at genstarte processen på tværs af klyngen:
    • # killall lldpd
  3. En midlertidig løsning, når problemet er løst ved øjeblikkelig genstart af lldpd-processer, der er på over 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 midlertidig løsning, når problemet er løst (følgende kommando er den samme som den forrige kommando), kan køres i en skærmsession for at udføre kontrollen hver 1200. sek.
    • # 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.