Isilon: Versie 8.0+ WebUI mislukt met status 500-fout als gevolg FD_SETSIZE fout in Apache2
Resumo: Als er een client is die te veel API-aanroepen doet om een sessie met een knooppunt tot stand te brengen, is het aantal stream File Descriptors tegen het httpd-proces groter dan 1024, wat problemen veroorzaakt met isi_papi_d ...
Sintomas
De WebUI is niet toegankelijk als u een "server-side failure with status 500" krijgt, zoals hieronder te zien is:
En je ziet deze fouten in de /var/log/apache2/webui_httpd_error.log:
2019-05-16T09:12:26Z <18.3> kanagawa-1 httpd[3004]: [:fout] [PID 3004:TID 34678361088] [client 1X.8X.1XX.1X1:60831] FastCGI: incomplete headers (0 bytes) received from server "/usr/sbin/isi_papi_d", referer: https://1X.1XX.1XX.1X8:8080/
2019-05-16T09:12:26Z <18.3> kanagawa-1 httpd[3004]: [:fout] [PID 3004:TID 34678361088] [client 1X.8X.1XX.1X1:60831] FastCGI: do_work() failed with ret 500 for request GET /platform/5/cluster/identity?_dc=1558011363341 HTTP/1.1, referer: https://1X.1XX.1XX.1X8:8080/
Causa
Dit wordt geverifieerd door de onderstaande opdracht uit te voeren:
Merk op dat een van de httpd-processen een hoog FD-aantal heeft dat hoger is dan 1024 (kijk naar kolom 3 van de laatste regel van de uitvoer van het proces):
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 ? - r------- 1 0 - -
In UNIX en verwante computerbesturingssystemen is een bestandsdescriptor (FD, minder vaak fildes) een abstracte indicator die wordt gebruikt om toegang te krijgen tot een bestand of andere invoer-/uitvoerbron, zoals een pijp of netwerkaansluiting. Bestandsdescriptoren maken deel uit van de POSIX-interface voor applicatieprogrammering.
Meer details over de verschillende soorten FD's die in de procstat-output te zien zijn, vindt u hier
Resolução
Als deze berichten zeer vaak voorkomen (meerdere sessies in een seconde), kan dit de Apache2-server gemakkelijk overbelasten en voorkomen dat het Apache2-proces communiceert met isi_papi_d service vanwege de onbeschikbaarheid van FD-sockets.
Identificeer de client in de uitvoer van webui_httpd_access.log en corrigeer deze vanaf de clientzijde.
Als tijdelijke tijdelijke oplossing start u de Apache2- en isi_webui-services opnieuw om de FD's te wissen.
Tijdelijke oplossing:
- Schakel de services uit:
# isi services -a isi_webui disable
- Controleer of er geen processen worden uitgevoerd. Beëindig alle lopende processen:
-
Schakel de services opnieuw in:
# isi services -a isi_webui enable
Mais informações
Een bekende trigger voor dit probleem heeft te maken met de onderstaande fout:
Wanneer de gebruiker geen CSRF-headers/tokens heeft opgenomen bij het opzetten van een sessie, kan de client een sessie tot stand brengen, maar zich niet aanmelden bij het cluster. Dit kan ertoe leiden dat het script blijft proberen een sessie met het knooppunt tot stand te brengen, wat kan leiden tot een hoog aantal FD's.
Het doel is om wijzigingen aan te brengen in de Client om deze compatibel te maken met de CSRF-controles. Raadpleeg het gedeelte Verificatie implementeren met CSRF-beveiliging van KB 517421: OneFS: Uw cluster beschermen tegen Cross-Site Request Forgery (CSRF) voor meer informatie (Alleen geregistreerde Dell klanten hebben toegang tot de inhoud van de artikellink, via Dell.com/support).