Introducción
Este documento describe el problema en el sessmgr que va al estado ADVERTENCIA debido al gran número de flujos HTTP. Este problema se informa en los routers de servicios agregados (ASR) de Cisco 5x00.
Problema
El estado de Sessmgr es ADVERTENCIA y uso elevado de la memoria.
******** show task resources *******
Thursday July 24 17:44:58 IST 2014
task cputime memory files sessions
cpu facility inst used allc used alloc used allc used allc S status
----------------------- --------- ------------- --------- ------------- ------
4/0 sessmgr 3 26% 100% 1.86G 1.86G 34 500 1766 28160 I warn
Estos registros de errores se generan en el proceso.No hay impacto en el suscriptor debido a este registro de errores. Según el diseño una vez que la llamada es rechazada por sessmgr, que está en estado ADVERTENCIA, el sistema intenta en diferentes sessmgrs y la llamada pasa.
[sessmgr 10018 error] [4/0/6812 <sessmgr:3> sessmgr_func.c:44683] [software internal system syslog] Sessmgr-3 full (35200 effective number of calls, 1777 calllines in use, 51146 free flows, 31221 free aaa_sessions, 1777 used-mem-credits, 1777 used-sess-credits, 1948360 mem-usage, 1945600 mem-limit, 0 ecs-queue-usage, 70400 ecs-queue-limit, 16850 ecs-num-flows, 400000 ecs-max-flows, 2334720 ecs-mem-limit[ecs-flow/mem-values:valid], 0x86 limit-flags) - call rejected
Troubleshoot
Capture el resultado show support details y verifique los resultados del comando para resolver problemas adicionales.
El problema de memoria está relacionado con la cantidad de flujos que maneja el sessmgr. La correlación se puede ver entre sessmgr con alto consumo de memoria y gran cantidad de flujos.
******** debug acsmgr show memory usage *******
Thursday July 24 17:50:06 IST 2014
------------------------------------------------------------------------------
! ! Caches Count !
Instance Memory ! Flows ! Callline Data-Session TCP OOO !
! Current Max ! Total Free Total Free Total Free!
--------------------------------------------------------------------------------
1 865.68M 43365 64360 5500 1178 56140 12775 1102 1064
2 852.05M 43879 64767 5500 1178 60150 16271 1102 1067
3 1902.68M 17252 276519 4400 2631 44110 26858 551 541
Para los sessmgrs afectados (y para uno no afectado), recopile estos resultados de comando, donde x es la instancia de Sessmgr.
show messenger proclet facility sessmgr instance <x> heap
show messenger proclet facility sessmgr instance <x> system heap
task core facility sessmgr instance <x>
show active-charging flows instance <x>
show profile facility sessmgr active depth 8 head 201
show task resources faciltity sessmgr instance <x> max
Compruebe si las reglas no optimizadas y el grupo de reglas consumen mucha memoria.
debug acsmgr show rule-optimization-information
debug acsmgr show grp-of-rdef-optimization-information
El mayor consumo de memoria se debe a estas funciones basadas en los resultados del comando.
acs_http_pkt_inspection()
acsmgr_alloc_buffer()
snx_add_dbufs()
sn_aaa_alloc_session_block()
sgx_imsa_bind_user()
También puede comprobar el número máximo de flujos HTTP simultáneos obtenidos por líneas de llamada
******** debug acsmgr show flow-stats max-simultaneous-flows http *******
Thursday July 24 17:50:04 IST 2014
Histogram of Max No of Simultaneous HTTP Flows attained by Calllines
No Of Flows No Of Calllines
1 to 10 964712518
11 to 20 384105002
21 to 40 232987189
41 to 100 148938918
101 to 200 115919586
201 to 500 86729303
501 to 1000 69975385
1001 to 2000 59635906
2001 to 5000 50743511
5001 to 10000 44566999
> 10000 1044671491
******** debug acsmgr show flow-stats cumulative http *******
Thursday July 24 17:50:03 IST 2014
Histogram of Total Cumulative HTTP Flows by Calllines
No Of Flows No Of Calllines
1 to 10 964712485
11 to 20 384104980
21 to 40 232987175
41 to 100 148938911
101 to 200 115919583
201 to 500 86729297
501 to 1000 69975377
1001 to 2000 59635907
2001 to 5000 50743509
5001 to 10000 44567004
> 10000 1044671452
Puede concluir que hay un gran número de sesiones HTTP asignadas y esto podría deberse al tráfico HTTP intenso. Además, hay casi 1044671491 Llamadas, que tienen más de 10000 flujos HTTP a la vez. Esto conlleva un uso elevado de la memoria.
Solución
Tiene la CLI para limitar el número de flujos por suscriptor
flow limit-across-applications
Cisco recomendaría configurar el límite de flujo entre aplicaciones a 5000 como se recomienda en todas las bases de reglas afectadas donde se puede ver un gran número de tráfico HTTP.
Este es el procedimiento para configurar el comando
In local context under Global configuration.
# active-charging service ECS
(config-acs)# rulebase GOLIVE
(config-rule-base)# flow limit-across-applications 5000
Más información sobre este comando.
flujo límite entre aplicaciones
Este comando le permite limitar el número total de flujos simultáneos por Suscriptor/APN enviados a una base de reglas independientemente del tipo de flujo, o limitar los flujos según el tipo de protocolo bajo la función Control de sesión.
Producto:
ACS
Privilegio:
Administrador de seguridad, administrador
Modo:
Exec > ACS Configuration> Rulebase Configuration
active-charging service service_name > rulebase rulebase_name
Entering the above command sequence results in the following prompt:
[local]host_name(config-rule-base)#
Sintaxis
flow limit-across-applications { limit | non-tcp limit | tcp limit }no flow limit-across-applications [ non-tcp | tcp ] no
Si se ha configurado previamente, elimina la configuración límite de flujo entre aplicaciones de la base de reglas actual.
flujo límite entre aplicaciones
Especifica el número máximo de flujos entre todas las aplicaciones para la base de reglas.
El límite debe ser un entero entre 1 y 4000000000.
Predeterminado: Sin límites
límite no TCP
Especifica el límite máximo de flujos de tipo no TCP.
El límite debe ser un entero entre 1 y 4000000000.
Predeterminado: Sin límites
límite TCP
Especifica el límite máximo de flujos TCP.
El límite debe ser un entero entre 1 y 4000000000.
Predeterminado: Sin límites
Uso:
Utilice este comando para limitar el número total de flujos permitidos para una base de reglas independientemente del tipo de flujo o limitar los flujos basados en el protocolo: no TCP (sin conexión) o TCP (orientado a la conexión).
Si un suscriptor intenta exceder estos límites, el sistema descarta los paquetes del nuevo flujo. Este procesamiento de límite de este comando tiene los siguientes aspectos para UDP, TCP, ICMP y algunos de los flujos exentos:
- UDP/ICMP: El sistema espera el tiempo de espera del flujo antes de actualizar el contador y eliminarlo del conteo de número de flujos.
- TCP: Después de que termine un flujo TCP, el sistema espera por un breve período de tiempo para acomodar la retransmisión de cualquier paquete perdido de un extremo. Los flujos TCP que se terminan, pero que aún están en espera de que se exima el tiempo de espera para este procesamiento de límite.
- Flujos exentos: El sistema exime a todos los demás flujos especificados con el comando flow limit-for-flow-type en el Modo de Configuración de Acción de Carga ACS establecido en no.
Ejemplo:
Este comando define el número máximo de flujos 200000 para la base de reglas:
flow limit-across-applications 200000