PowerScale: Tiempos de espera agotados de JWT y PAPI en PowerScale OneFS 9.5 y superior
Resumen: Es posible que se produzcan tiempos de espera agotados de JWT y PAPI con altos volúmenes de acciones web, API, PAPI y JWT en PowerScale OneFS 9.5 y superior. Esto puede presentarse como extracción de núcleos del proceso JWT. ...
Síntomas
Esto se aplica a OneFS 9.5 y versiones posteriores para los impactos; sin embargo, algunas versiones aún más antiguas de OneFS a veces pueden ver estas condiciones.
Algunos de los comandos de este artículo de la base de conocimientos no funcionarán en versiones de OneFS anteriores a 9.6 (no 9.5) y es probable que no se transfieran a versiones anteriores. Considere la posibilidad de actualizar a niveles de código de destino modernos.
A medida que OneFS evoluciona, los sistemas de API subyacentes se actualizan de forma rutinaria. A partir de la versión 9.5, ciertos flujos de trabajo y casos de uso con altos niveles de sesiones de autenticación API/web frecuentes o simultáneas pueden ver tasas más altas de tiempos de espera de conexión, PAPI, API y similares que pueden superponerse con la extracción de núcleos de procesos relacionados con JWT. JWT es uno de los sistemas involucrados en la gestión de tokens CSRF para la autenticación API según lo requiere nuestro modelo de seguridad moderno.
Los núcleos, si están presentes, tienen el siguiente aspecto:
Powerscale-OneFS-27# isi_for_array -s ls -lah /var/crash/ | grep -i jwt
Powerscale-OneFS-12: -rw-rw---- 1 root daemon 167M Jul 14 23:39 jwt.core.gz
Powerscale-OneFS-13: -rw-rw---- 1 root daemon 214M Jul 15 12:19 jwt.core.gz
Powerscale-OneFS-17: -rw-rw---- 1 root daemon 181M Jul 15 14:03 jwt.core.gz
Powerscale-OneFS-21: -rw-rw---- 1 root daemon 172M Jul 24 14:20 jwt.core.gz
Powerscale-OneFS-22: -rw-rw---- 1 root daemon 37M Jul 24 14:23 jwt.core.gz
Powerscale-OneFS-27: -rw-rw---- 1 root daemon 165M Jul 24 10:08 jwt.core.gz
Powerscale-OneFS-28: -rw-rw---- 1 root daemon 181M Jul 24 13:35 jwt.core.gz
Powerscale-OneFS-29: -rw-rw---- 1 root daemon 181M Jul 24 13:10 jwt.core.gz
Lo que puede incluir errores de registro similares como este:
$ cat Powerscale-OneFS-*/varlog.tar/log/jwt.log | grep 2024-07 | less
2024-07-15T13:00:22.459910-05:00 <30.5> Powerscale-OneFS-66(id71) jwt[83869]: Logging started
2024-07-15T13:25:54.388061-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[83869]: [jwt] Failed to update active session user index. errno: 12 - Cannot allocate memory
2024-07-15T13:25:54.495084-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[83869]: [jwt] Failed to add session: 0801b74c-1abf-4b23-89a0-1e9daf429559 to active session user index identity: SID:S-1-22-1-0, zone: 1. STATUS_INVALID_PARAMETER (0xC000000D)
2024-07-15T14:05:56.869968-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[83869]: [jwt] Failed to update active session user index. errno: 12 - Cannot allocate memory
2024-07-15T14:05:57.115920-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[83869]: [jwt] Failed to add session: 08c173f1-60de-472d-a89d-1d6af2462a28 to active session user index identity: SID:S-1-22-1-0, zone: 1. STATUS_INVALID_PARAMETER (0xC000000D)
2024-07-15T14:28:28.441603-05:00 <30.5> Powerscale-OneFS-66(id71) jwt[2077]: Logging started
2024-07-15T14:52:08.794040-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[2077]: [jwt] Failed to update active session user index. errno: 12 - Cannot allocate memory
2024-07-15T14:52:09.043575-05:00 <30.3> Powerscale-OneFS-66 syslogd: last message repeated 1 times
2024-07-15T14:52:09.070500-05:00 <30.3> Powerscale-OneFS-66(id71) jwt[2077]: [jwt] Failed to add session: a1164a8f-cd68-45bf-bc07-5d7beefe7ba3 to active session user index identity: SID:S-1-22-1-0, zone: 1. STATUS_INVALID_PARAMETER (0xC000000D)
Sin embargo, es posible que el problema no se limite a los núcleos JWT. Los problemas pueden estar presentes en 9.5 o versiones anteriores, pero las soluciones alternativas y las correcciones están disponibles en 9.6 OneFS y versiones posteriores.
Las soluciones alternativas de este artículo de la base de conocimientos en OneFS 9.6 y superior pueden proporcionar alivio a los problemas relacionados con el tiempo de espera agotado relacionado con la API de OneFS.Causa
Resolución
Estas soluciones alternativas solo se aplican a OneFS 9.6 y versiones posteriores.
En versiones inferiores que no hayan llegado al final del ciclo de vida, comuníquese directamente con el soporte. Es posible que haya opciones para seguir, pero debe actualizar OneFS o trabajar con la API o el proveedor externo para distribuir de manera más eficiente su carga de trabajo basada en API en más nodos y durante más tiempo.
Direccionamiento de los límites de vMemory para JWT:
El vmlimit actual para el proceso JWT es de 1 GB. Podemos configurarlo en 2 GB y comprobar si ayuda. Visualización del límite de 1 GB para JWT:
9610-1# limits -P $(pgrep jwt) -B
Resource limits (current):
cputime infinity secs
filesize infinity kB
datasize 33554432 kB
stacksize 524288 kB
coredumpsize infinity kB
memoryuse infinity kB
memorylocked 131072 kB
maxprocesses 7390
openfiles 16384
sbsize infinity bytes
vmemoryuse 1048576 kB <----
pseudo-terminals infinity
swapuse infinity kB
kqueues infinity
umtxp infinity
Para configurarlo en 2 GB en su lugar:
# isi_for_array -s 'limits -P $(pgrep jwt) -v 2g'
Para confirmar el nuevo límite:
# isi_for_array -s 'limits -P $(pgrep jwt) -B' | grep vmemoryuse
9610-1: vmemoryuse 2097152 kB
9610-2: vmemoryuse 2097152 kB
9610-3: vmemoryuse 2097152 kB
9610-4: vmemoryuse 2097152 kB
9610-5: vmemoryuse 2097152 kB
9610-6: vmemoryuse 2097152 kB
Puede agregarlo a cron para que sea permanente si esos resultados son satisfactorios utilizando la información en Isilon Cómo editar crontab
Para cronificar esto, querrá configurar este comando para que se ejecute en un intervalo razonable a fin de tener en cuenta que se restablecerá después de cualquier posible reinicio del clúster o nodo, como un cron para ejecutar cada pocas horas:
isi_for_array -s 'limits -P $(pgrep jwt) -v 2g'
Comuníquese con el equipo de ingeniería de sistemas de Dell si tiene preguntas sobre la implementación de cron. Si posteriormente tiene dificultades técnicas con eso, comuníquese con el soporte técnico.
Abordar los límites simultáneos de PAPI:
Otro factor que puede afectar sus operaciones es la cantidad de sesiones simultáneas permitidas de PAPI/API. Algunos proveedores externos modernos pueden enviar una verdadera avalancha de actividad hacia la plataforma de almacenamiento para las solicitudes de API, lo que, combinado con nuestras propias operaciones internas que utilizan API, a veces puede hacer que se supere la cantidad máxima de sesiones. El límite máximo predeterminado es 80 con un mínimo mínimo de 40:
9610-1# isi_gconfig -t papi | grep -i child
proc.auto_configure_child_limit (bool) = true
proc.child_limit (int) = 80
proc.child_limit_ceiling (int) = 80
proc.child_limit_floor (int) = 40
proc.child_limit_extension (int) = 0
El límite y el techo se pueden aumentar de la siguiente manera para las pruebas/corrección:
9610-1# isi_gconfig -t papi proc.child_limit=100; isi_gconfig -t papi proc.child_limit_ceiling=100
9610-1# isi_gconfig -t papi | grep child
proc.auto_configure_child_limit (bool) = true
proc.child_limit (int) = 100
proc.child_limit_ceiling (int) = 100
proc.child_limit_floor (int) = 40
proc.child_limit_extension (int) = 0
Tenga en cuenta que los gconfigs anteriores son una configuración global para todos los nodos; No hay opción local.
Si aumenta esto, puede haber impactos inesperados, como un mayor costo para los sistemas relacionados o impactos teóricos en el rendimiento exclusivos de un entorno determinado, ya que es probable que no haya dos clústeres de almacenamiento que tengan perfiles de rendimiento idénticos. Tales consideraciones son normalmente imposibles de pronosticar con anticipación y solo de manera reactiva.
Comuníquese con su SE o soporte si tiene preguntas sobre esto.