Isilon. Веб-интерфейс версии 8.0+ завершается сбоем с ошибкой 500 с состоянием 500 из-за ошибки FD_SETSIZE в Apache2
Resumo: если клиент выполняет слишком много вызовов API для установления сеанса с узлом, количество файловых дескрипторов потока для процесса httpd превышает 1024, что вызывает проблемы с isi_papi_d ...
Sintomas
Веб-интерфейс недоступен, если возникает сообщение о сбое на стороне сервера с состоянием 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", referer: 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, referer: https://1X.1XX.1XX.1X8:8080/
Causa
Это можно проверить, выполнив следующую команду:
Заметьте, что один из процессов httpd имеет большое число FD, превышающее 1024 (взгляните на столбец 3 последней строки выходных данных процесса):
done 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 ? - r------- 1 0 - -.
.
..
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 -A isi_webui Disable
- Убедитесь, что процессы не выполняются. Завершите все запущенные процессы:
-
Снова включите службы:
# Службы ISI -A isi_webui Enable
Mais informações
Известная причина этой проблемы связана со следующей ошибкой:
Если при попытке установить сеанс пользователь не включил никаких заголовков/маркеров CSRF, клиент сможет установить сеанс, но не сможет войти в кластер. Это может привести к тому, что сценарий будет продолжать попытки установить сессию с узлом, что может привести к большому количеству FD.
Решение заключается в внесении изменений в клиент, чтобы обеспечить совместимость с проверками CSRF. См. раздел Как реализовать аутентификацию с защитой CSRF в статье базы знаний 517421: OneFS. Как защитить кластер от подделки межсайтовых запросов (CSRF) для получения дополнительной информации (только зарегистрированные заказчики Dell могут получить доступ к содержимому по ссылке на статью по ссылке Dell.com/support).