Isilon: Версія 8.0+ WebUI провалилася з помилкою статусу 500 через помилку FD_SETSIZE Apache2
Resumo: якщо клієнт робить занадто багато викликів API для встановлення сесії з вузлом, кількість потокових файлових дескрипторів у процесі httpd перевищує 1024, що спричиняє проблеми з isi_papi_d ...
Sintomas
WebUI недоступний, якщо ви отримуєте «серверну помилку зі статусом 500», як показано нижче:
І ви бачите ці помилки у /var/log/apache2/webui_httpd_error.log:
2019-05-16T09:12:26Z <18.3> kanagawa-1 httpd[3004]: [:помилка] [PID 3004:tid 34678361088] [клієнт 1X.8X.1XX.1X1:60831] FastCGI: неповні заголовки (0 байт) отримані з сервера "/usr/sbin/isi_papi_d", посилання: https://1X.1XX.1XX.1X8:8080/
2019-05-16T09:12:26Z <18.3> kanagawa-1 httpd[3004]: [:помилка] [PID 3004:tid 34678361088] [клієнт 1X.8X.1XX.1X1:60831] FastCGI: do_work() не справився з ret 500 для запиту GET /platform/5/cluster/identity?_dc=1558011363341 HTTP/1.1, реферер: https://1X.1XX.1XX.1X8:8080/
Causa
Це підтверджується, виконавши команду нижче:
Зверніть увагу, що один із httpd-процесів має високу кількість FD, яка перевищує 1024 (дивіться стовпець 3 останнього рядка виводу процесу):
25136
PID COMM FD T V FLAGS REF OFFSET PRO NAME
25136 httpd text v r r------- - - - /usr/local/apache24/bin/httpd
25136 httpd cwd v d r------- - - - /
25136 httpd root v d r------- - - - /
25136 httpd 0 v c r------- 4 0 - /dev/null
25136 httpd 1 v c -w------ 4 0 - /dev/null
25136 httpd 2 v c -w------ 5 0 - /dev/null
25136 httpd 3 s - rw---n-- 4 0 TCP ::.8080 ::.0
25136 httpd 4 s - rw---n-- 4 0 TCP 0.0.0.0:8080 0.0.0.0:0
25136 httpd 5 s - rw---n-- 4 0 TCP ::.8081 ::.0
25136 httpd 6 s - rw---n-- 4 0 TCP 0.0.0.0:8081 0.0.0.0:0
25136 httpd 7 s - rw---n-- 4 0 TCP :: .8082 ::.0
25136 httpd 8 s - rw---n-- 4 0 TCP 0.0.0.0:8082 0.0.0.0:0
25136 httpd 9 s - rw---n-- 4 0 TCP ::.8083 ::.0
25136 httpd 10 s - rw---n-- 4 0 TCP 0.0.0.0:8083 0.0.0.0:
0 25136 httpd 11 p - rw------ 5 0 - -
25136 httpd 12 p - rw------ 4 0 - -
25136 httpd 13 v r -w------ 4 0 - /var/apache2/run/mpm-accept-0.25132
25136 httpd 14 s - rw------ 4 0 UDD /var/run/log
25136 httpd 15 v r -w------ 1 0 - /var/apache2/run/proxy.25132
25136 httpd 16 p - rw------ 4 0 - -
25136 httpd 17 v r -w------ 2 0 - /var/apache2/run/proxy.25132 25136
httpd 18 p - rw------ 2 0 - -
25136 httpd 19 v r -w------ 2 0 - /var/apache2/run/rewrite-map.25132
25136 httpd 20 v r -w-----l 1 0 - /var/apache2/run/mpm-accept-0.25132
25136 httpd 21 v r -w------ 1 0 - /var/apache2/run/rewrite-map.25132
25136 httpd 22 k - rw------ 2 0 - -
25136 httpd 23 s - rw---n-- 1 0 TCP sendq:2146 127.0.0.1:8080 127.0.0.1:18720
25136 httpd 24 v c r------- 1 31968 - /dev/random
25136 httpd 25 ? - r------- 1 0 - -
25136 httpd 27 ? - Р------- 10 - -
.
.
..
25136 httpd 1121 ? - Р------- 1 0 - -
В UNIX та пов'язаних комп'ютерних операційних системах дескриптор файлів (FD, рідше fildes) — це абстрактний індикатор, який використовується для доступу до файлу або іншого вхідного/вихідного ресурсу, такого як труба або мережевий роз'єм. Файлові дескриптори є частиною інтерфейсу
програмування POSIX.Більше деталей про різні типи FD, які видно у виході procstat, можна знайти тут
Resolução
Якщо ці повідомлення з'являються дуже часто (кілька сесій за секунду), це може легко перевантажити сервер Apache2 і завадити процесу Apache2 спілкуватися з isi_papi_d сервісом через недоступність сокетів FD.
Визначте клієнта у вихідному результаті webui_httpd_access.log і виправте його зі сторони клієнта.
Як тимчасовий обхідний шлях, перезапустіть сервіси Apache2 та isi_webui, щоб очистити FD.
Обхідний шлях:
- Вимкніть послуги:
# ISI Services -A isi_webui disable
- Перевірте, чи немає запущених процесів. Зупиніть усі запущені процеси:
-
Увімкніть сервіси знову:
# isi services -a isi_webui enable
Mais informações
Відомий тригер цієї проблеми пов'язаний із наведеною нижче помилкою:
Якщо користувач не включив жодних CSRF-заголовків/токен при спробі створити сесію, клієнт зможе встановити сесію, але не увійти в кластер. Це може призвести до того, що скрипт постійно намагатиметься встановити сесію з вузлом, що може призвести до високої кількості FD.
Розв'язання полягає у внесенні змін до клієнта, щоб він був сумісний із перевірками CSRF. Дивіться до розділу KB 517421 про те, як реалізувати автентифікацію за допомогою CSRF-захисту: OneFS: Як захистити свій кластер від підробки запитів між сайтами (CSRF) для отримання додаткової інформації (доступ до контенту за Dell.com/support посиланням на статтю можуть доступні лише зареєстровані клієнти Dell).