Шкала потужності: Вузли розділяються, оскільки lldpd більше не надсилає серцебиття на бекенд перемикач Dell
Summary: У цій статті описано проблему, пов'язану з тим_lldpd, що процес використовує максимально допустиму пам'ять і більше не надсилає пакети протоколу виявлення каналу (LLDP) на внутрішні комутатори. ...
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'
Приклад виводу нижче:
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
Resolution
ПОПЕРЕДЖЕННЯ
|
Є кілька варіантів вирішення або вирішення проблеми залежно від вашого поточного сценарію:
- Оновіть OneFS до 9.5.0.6 і вище
- Зверніть увагу на попередження, описані в статті, щодо перезапуску lldpd перед будь-яким оновленням із відповідних версій.
- Тимчасовий обхідний шлях завершується негайно, перезапускаючи процеси lldpd. Для цього потрібне ручне втручання шляхом перезапуску процесу по всьому кластеру:
-
# killall lldpd
-
- Тимчасовий обхідний шлях після вирішення проблеми полягає в негайному перезапуску процесів 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) } }'"'"''
-
- Тимчасовий обхідний шлях після вирішення проблеми (наведена нижче команда така сама, як і попередня), його можна запустити в сеансі екрана для виконання перевірки кожні 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
-