Contents

Introduction

Problema

Troubleshoot

Solução

Introduction

Este documento descreve o problema no sessmgr indo para o estado AVISO devido ao grande número de fluxos HTTP. Esse problema é relatado nos Cisco Aggregated Service Routers (ASR) 5x00.

Problema

O status do Sessmgr é AVISO e alta utilização de memória.

******** 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

Estes registros de erro são gerados no processo. Não há impacto de assinante devido a este registro de erros. Conforme o projeto, uma vez que a chamada é rejeitada do sessmgr, que está no estado AVISO, o sistema tenta em diferentes avaliações e a chamada passa.

[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 show support details output e verifique as saídas do comando para solucionar problemas ainda mais.

O problema de memória está relacionado à quantidade de fluxos que o sessmgr lida. A correlação pode ser observada entre o sessmgr com alto consumo de memória e grande quantidade de fluxos.

******** 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 os sessmgrs afetados (e para um não afetado), colete essas saídas de comando, onde x é a instância do 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

Verifique se as regras não otimizadas e o grupo de regras consomem muita memória.

debug acsmgr show rule-optimization-information

debug acsmgr show grp-of-rdef-optimization-information

O maior consumo de memória se deve a essas funções com base nas saídas do comando.

acs_http_pkt_inspection()

acsmgr_alloc_buffer()

snx_add_dbufs()

sn_aaa_alloc_session_block()

sgx_imsa_bind_user()

Você também pode verificar o número máximo de fluxos HTTP simultâneos obtidos por linhas de chamada

******** 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

Você pode concluir que há um grande número de sessões HTTP alocadas e isso pode ser devido ao tráfego HTTP pesado. Também há quase 1044671491 linhas de chamada, que têm mais de 10000 fluxos HTTP por vez. Isso leva ao alto uso da memória.

Solução

Você tem a CLI para limitar o número de fluxos por assinante

flow limit-across-applications

A Cisco recomendaria configurar o limite de fluxo entre aplicativos para 5000 conforme recomendado em todas as bases de regras afetadas onde um grande número de tráfego HTTP pode ser visto.

Este é o procedimento para configurar o comando

In local context under Global configuration.

# active-charging service ECS

(config-acs)# rulebase GOLIVE

(config-rule-base)# flow limit-across-applications 5000

Mais informações sobre esse comando.

fluxo limite entre aplicativos

Esse comando permite limitar o número total de fluxos simultâneos por Assinante/APN enviados a uma base de regras, independentemente do tipo de fluxo, ou limitar os fluxos com base no tipo de protocolo sob o recurso Controle de sessão.

Produto:

ACS

Privilégio:

Administrador de segurança, 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)#

Sintaxe

flow limit-across-applications { limit | non-tcp limit | tcp limit }no flow limit-across-applications [ non-tcp | tcp ] no

Se configurado anteriormente, exclui a configuração limite de fluxo entre aplicativos da base de regras atual.

fluxo limite entre aplicativos

Especifica o número máximo de fluxos em todos os aplicativos para a base de regras.

o limite deve ser um inteiro de 1 a 4000000000.

Padrão: Sem limites

limite não-TCP

Especifica o limite máximo de fluxos de tipo não TCP.

o limite deve ser um inteiro de 1 a 4000000000.

Padrão: Sem limites

limite de TCP

Especifica o limite máximo de fluxos TCP.

o limite deve ser um inteiro de 1 a 4000000000.

Padrão: Sem limites

Uso:

Use este comando para limitar o número total de fluxos permitidos para uma base de regras independentemente do tipo de fluxo ou limitar os fluxos com base no protocolo — não TCP (sem conexão) ou TCP (orientado a conexão).

Se um assinante tentar exceder esses limites, o sistema descartará os pacotes de novo fluxo. Este processamento de limite deste comando tem os seguintes aspectos para UDP, TCP, ICMP e alguns dos fluxos isentos:

- UDP/ICMP: O sistema espera o tempo limite do fluxo antes de atualizar o contador e removê-lo da contagem de fluxos.

- TCP: Depois que um fluxo TCP termina, o sistema espera por um curto período de tempo para acomodar a retransmissão de qualquer pacote perdido de uma extremidade. Os fluxos TCP são encerrados, mas ainda estão em período de espera para o tempo limite estão isentos para esse processamento de limite.

- Fluxos isentos: O sistema isenta todos os outros fluxos especificados com o comando flow limit-for-flow-type no ACS Charging Action Configuration Mode definido como no.

Exemplo:

Esse comando define o número máximo de fluxos de 200000 para a base de regras:

flow limit-across-applications 200000