PowerScale: Węzły podzielone, ponieważ lldpd nie wysyła już pulsu do przełącznika Dell backend

Summary: W tym artykule opisano problem z procesem_lldpd który zużywa maksymalną dozwoloną pamięć i nie wysyła już pakietów protokołu LLDP (Link Layer Discovery Protocol) do przełączników zaplecza. ...

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

OSTRZEŻENIE:
  • Nie zaleca się wykonywania aktualizacji OneFS do wersji, których dotyczy problem (od 9.5.0.0 do 9.5.0.5)

  • RPS lub Klient MUSI ponownie uruchomić wszystkie procesy lldpd przed wykonaniem aktualizacji OneFS w wersji, której dotyczy problem (na przykład aktualizacja z wersji 9.5.0.1 do 9.5.0.7). Postępuj zgodnie z opcją 2 w rozdzielczości.


W lldpd występuje wyciek pamięci, a węzeł może zostać podzielony, jeśli proces zużył maksymalną dozwoloną pamięć (1 GB). Gdy węzeł zużywa dozwoloną pamięć, nie wysyła już pakietów LLDP do przełączników zaplecza. Zakwalifikowany przełącznik zaplecza PowerScale Dell z usługami SmartFabric Services (SFS) musi otrzymywać pakiety pulsu (LLDP) z węzła. W przypadku pominięcia trzech impulsów port przełącznika jest usuwany z dedykowanej sieci wirtualnej. Wtedy węzeł nie może już komunikować się z klastrem za pośrednictwem tej ścieżki.

Jeśli klaster ma zostać uaktualniony, węzły są kolejno uruchamiane ponownie, a każdy ponowny rozruch powoduje wyłączenie i utworzenie kopii zapasowej kilku łączy. Każde z tych zdarzeń łącza z ponownych uruchomień powoli zwiększa rozmiar użycia maszyny wirtualnej lldpd. Jest wysoce prawdopodobne, że węzły zostaną podzielone podczas aktualizacji, jeśli proces nie został ostatnio ponownie uruchomiony.

Ten problem może wystąpić w następujących scenariuszach:

  • Uaktualnienia OneFS
  • Normalne działanie klastra

Bieżące użycie pamięci wirtualnej można zobaczyć za pomocą następującego polecenia, w którym MAKSYMALNA wartość RSS (Resident Set Size) wynosi 1 048 576 KB. RSS to szósta kolumna informacji z wyjścia PS (na lewo od " - ") (z wyłączeniem nazwy węzła).

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

 

UWAGA: Funkcja "isi_for_array" nie działa na węzłach, które są w trybie OFFLINE. Do zebrania powyższych informacji wymagane jest bezpośrednie połączenie z węzłami OFFLINE.

 


Przykładowe dane wyjściowe poniżej:

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)
                                         ^^^^^^


Szybkość, z jaką proces lldpd zużywa pamięć, zależy od kilku czynników. Jest to również powód większego niż zwykle wzrostu użycia pamięci podczas uaktualnień OneFS:

  • Rozmiar konfiguracji sieci w klastrze
  • Liczba podsieci utworzonych na podstawie konfiguracji sieci
  • Liczba zdarzeń sieciowych, takich jak zerwanie lub zwiększenie łącza
  • Powtarzające się zdarzenia ponownego uruchamiania

Czas potrzebny _lldpd osiągnięcie przez proces MAKSYMALNEJ dozwolonej pamięci różni się w zależności od klastra. Odkryto jednak, że istnieje korelacja między rozmiarem konfiguracji sieci a czasem do awarii. Oznacza to, że im więcej groupnetów, podsieci i pul jest skonfigurowanych, tym szybciej może to nastąpić.  

Cause

W wersji 9.5 lldpd został zaktualizowany i zawiera wyciek pamięci.

Resolution

OSTRZEŻENIE

  • Nie zaleca się wykonywania aktualizacji OneFS do wersji, których dotyczy problem (od 9.5.0.0 do 9.5.0.5)

  • RPS lub Klient MUSI ponownie uruchomić wszystkie procesy lldpd przed wykonaniem aktualizacji OneFS w wersji, której dotyczy problem (na przykład aktualizacja z wersji 9.5.0.1 do 9.5.0.7). Postępuj zgodnie z opcją 2 w rozdzielczości.

Istnieje kilka opcji rozwiązania lub obejścia problemu w zależności od bieżącego scenariusza:

  1. Uaktualnij OneFS do wersji 9.5.0.6 lub nowszej
    • Zwróć uwagę na komunikaty ostrzegawcze opisane w tym artykule dotyczące ponownego uruchamiania lldpd przed aktualizacją wersji, których dotyczy problem.
  2. Tymczasowe obejście problemu jest wykonywane natychmiast, ponownie uruchamiając procesy lldpd. Wymaga to ręcznej interwencji poprzez ponowne uruchomienie procesu w klastrze:
    • # killall lldpd
  3. Tymczasowe obejście problemu po rozwiązaniu problemu polega na natychmiastowym ponownym uruchomieniu procesów lldpd o rozmiarze przekraczającym 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. Tymczasowe obejście problemu po rozwiązaniu problemu (poniższe polecenie jest takie samo jak poprzednie), można je uruchomić w sesji screen, aby sprawdzać co 1200 s.
    • # 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.