PowerScale: Nós divididos, pois o lldpd não está mais enviando heartbeat para o switch Dell de back-end

Summary: Este artigo descreve um problema em que _lldpd processo consome sua memória máxima permitida e não envia mais pacotes do protocolo LLDP (Link Layer Discovery Protocol) para switches de back-end. ...

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

ADVERTÊNCIA:
  • Não é recomendável realizar um upgrade do OneFS para as versões afetadas (9.5.0.0 a 9.5.0.5)

  • O RPS ou o cliente DEVE reiniciar todos os processos lldpd antes de realizar um upgrade do OneFS enquanto estiver em uma versão afetada (por exemplo, fazer upgrade da versão 9.5.0.1 para a 9.5.0.7). Siga a Opção 2 em resolução.


Há uma perda de memória no lldpd e um nó pode ser dividido se o processo tiver consumido sua memória máxima permitida (1 GB). Depois que o nó consome a memória permitida, ele não envia mais pacotes LLDP para os switches de back-end. Um switch de back-end qualificado pela Dell do PowerScale que executa o SmartFabric Services (SFS) deve receber pacotes de heartbeat (LLDP) de um nó. Se três heartbeats forem perdidos, a porta do switch será removida de sua rede virtual dedicada. Em seguida, um nó não pode mais se comunicar com o cluster por esse caminho.

Se um cluster for submetido a upgrade, os nós serão reinicializados sucessivamente e cada reinicialização leva vários links para baixo e para backup. Cada um desses eventos de link a partir das reinicializações aumenta lentamente o tamanho do uso do vmem lldpd. É altamente provável que os nós sejam divididos durante um upgrade se o processo não tiver sido reiniciado recentemente.

Esse problema pode ocorrer durante os seguintes cenários:

  • OneFS Upgrades
  • Operações normais de cluster

O uso atual do vmem pode ser visto com o seguinte comando, em que um valor MAXIMUM Resident Set Size (RSS) é 1.048.576 KB. RSS é a sexta coluna de informações da saída PS (à esquerda de " - ") (excluindo o nome do nó).

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

 

Nota: "isi_for_array" não funciona em nós que estão OFFLINE. Uma conexão direta com os nós OFF-LINE é necessária para coletar as informações acima.

 


Exemplo de resultado abaixo:

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


A velocidade com que o processo lldpd consome a memória varia em vários fatores. Esse também é o motivo para o aumento maior do que o normal no uso de memória durante os upgrades do OneFS:

  • Tamanho da configuração de rede no cluster
  • Número de sub-redes criadas a partir da configuração de rede
  • O número de eventos de rede, como link inativo ou ativo
  • Eventos recorrentes de reinicialização

O tempo necessário para que _lldpd processo atinja a memória MÁXIMA permitida varia de um cluster para outro. No entanto, foi descoberto que há uma correlação entre o tamanho da configuração de rede e o tempo até falhas. Isso significa que quanto mais groupnets, sub-redes e pools forem configurados, mais cedo isso poderá ocorrer.  

Cause

No 9.5, o lldpd foi atualizado e contém uma perda de memória.

Resolution

AVISO

  • Não é recomendável realizar um upgrade do OneFS para as versões afetadas (9.5.0.0 a 9.5.0.5)

  • O RPS ou o cliente DEVE reiniciar todos os processos lldpd antes de realizar um upgrade do OneFS enquanto estiver em uma versão afetada (por exemplo, fazer upgrade da versão 9.5.0.1 para a 9.5.0.7). Siga a Opção 2 em resolução.

Há várias opções para resolver ou contornar o problema, dependendo do seu cenário atual:

  1. Upgrade do OneFS para a versão 9.5.0.6 e posteriores
    • Observe as mensagens de advertência detalhadas no artigo sobre reiniciar o lldpd antes de qualquer upgrade das versões afetadas.
  2. Uma solução temporária é concluída imediatamente, reiniciando os processos lldpd. Isso requer intervenção manual, reiniciando o processo em todo o cluster:
    • # killall lldpd
  3. Uma solução temporária depois que o problema é resolvido na reinicialização imediata de processos lldpd com mais de 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. Uma solução temporária depois que o problema for resolvido (o comando a seguir é o mesmo que o comando anterior) poderá ser executada em uma sessão de tela para realizar a verificação a cada 1.200 segundos.
    • # 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.