Шкала потужності: Вузли розділяються, оскільки lldpd більше не надсилає серцебиття на бекенд перемикач Dell

Summary: У цій статті описано проблему, пов'язану з тим_lldpd, що процес використовує максимально допустиму пам'ять і більше не надсилає пакети протоколу виявлення каналу (LLDP) на внутрішні комутатори. ...

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

ПОПЕРЕДЖЕННЯ:
  • Не рекомендується виконувати оновлення OneFS до відповідних версій (від 9.5.0.0 до 9.5.0.5)

  • RPS або Клієнт ПОВИННІ перезапустити всі процеси lldpd перед виконанням оновлення OneFS на відповідній версії (наприклад, оновлення з 9.5.0.1 до 9.5.0.7). Дотримуйтесь варіанту 2 у роздільній здатності.


У lldpd є витік пам'яті, і вузол може розщеплюватися, якщо процес використав максимально допустиму пам'ять (1 Гб). Як тільки вузол споживає дозволену пам'ять, він більше не надсилає пакети LLDP на внутрішні комутатори. Кваліфікований бекенд-комутатор PowerScale Dell, на якому запущено служби SmartFabric Services (SFS), повинен отримувати пакети серцебиття (LLDP) від вузла. Якщо пропущено три серцебиття, порт комутатора видаляється зі своєї виділеної віртуальної мережі. Тоді вузол більше не може зв'язатися з кластером за цим шляхом.

Якщо кластер збирається оновлюватися, вузли перезавантажуються послідовно, і кожне перезавантаження займає кілька посилань вниз і назад. Кожна з цих подій посилання з перезавантаження повільно збільшує розмір використання lldpd vmem. Велика ймовірність того, що вузли розщеплюються під час оновлення, якщо процес не був нещодавно запущений заново.

Ця проблема може виникати в таких випадках:

  • Оновлення OneFS
  • Звичайні операції кластера

Поточне використання vmem можна побачити за допомогою наступної команди, де МАКСИМАЛЬНЕ значення Resident Set Size (RSS) становить 1 048 576 КБ. RSS - це шостий стовпець інформації з виводу PS (зліва від " - ") (без урахування імені вузла).

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

 

ПРИМІТКА. "isi_for_array" не працює на вузлах, які перебувають в автономному режимі. Для збору вищезазначеної інформації потрібне пряме підключення до вузлів OFFLINE.

 


Приклад виводу нижче:

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


Швидкість, з якою процес lldpd споживає пам'ять, залежить від кількох факторів. Це також є причиною більш високого, ніж зазвичай, збільшення використання пам'яті під час оновлень OneFS:

  • Розмір конфігурації мережі на кластері
  • Кількість підмереж, створених у конфігурації мережі
  • Кількість мережевих подій, таких як з'єднання вниз або вгору
  • Повторювані події перезавантаження

Час, необхідний _lldpd процесу для досягнення МАКСИМАЛЬНО допустимого обсягу пам'яті, варіюється від кластера до кластера. Однак було виявлено, що існує кореляція між розміром конфігурації мережі та часом до відмови. Це означає, що чим більше групнетів, підмереж і пулів налаштовано, тим швидше це може відбутися.  

Cause

У версії 9.5 lldpd був оновлений і містить витік пам'яті.

Resolution

ПОПЕРЕДЖЕННЯ

  • Не рекомендується виконувати оновлення OneFS до відповідних версій (від 9.5.0.0 до 9.5.0.5)

  • RPS або Клієнт ПОВИННІ перезапустити всі процеси lldpd перед виконанням оновлення OneFS на відповідній версії (наприклад, оновлення з 9.5.0.1 до 9.5.0.7). Дотримуйтесь варіанту 2 у роздільній здатності.

Є кілька варіантів вирішення або вирішення проблеми залежно від вашого поточного сценарію:

  1. Оновіть OneFS до 9.5.0.6 і вище
    • Зверніть увагу на попередження, описані в статті, щодо перезапуску lldpd перед будь-яким оновленням із відповідних версій.
  2. Тимчасовий обхідний шлях завершується негайно, перезапускаючи процеси lldpd. Для цього потрібне ручне втручання шляхом перезапуску процесу по всьому кластеру:
    • # killall lldpd
  3. Тимчасовий обхідний шлях після вирішення проблеми полягає в негайному перезапуску процесів lldpd, які перевищують 500 МБ:
    • # 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. Тимчасовий обхідний шлях після вирішення проблеми (наведена нижче команда така сама, як і попередня), його можна запустити в сеансі екрана для виконання перевірки кожні 1200 с.
    • # 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.