A Cisco traduziu este documento com a ajuda de tecnologias de tradução automática e humana para oferecer conteúdo de suporte aos seus usuários no seu próprio idioma, independentemente da localização. Observe que mesmo a melhor tradução automática não será tão precisa quanto as realizadas por um tradutor profissional. A Cisco Systems, Inc. não se responsabiliza pela precisão destas traduções e recomenda que o documento original em inglês (link fornecido) seja sempre consultado.
Este documento descreve sintomas e causas comuns de uma grande utilização da CPU em Cisco routers e oferece orientações e soluções de Troubleshooting.
A solução de problemas de alta utilização da CPU nos roteadores Cisco exige o entendimento dos caminhos de switching do CISCO IOS® Software.Para obter mais informações sobre os caminhos de switching do software Cisco IOS, consulte Conceitos básicos de ajuste de desempenho.
Este documento não se restringe a versões de software e hardware específicas.
Esta lista descreve os sintomas comuns de utilização elevada da CPU.Se você observar qualquer um destes sintomas, siga os passos para Troubleshooting neste documento para atenuar o problema.
Altos percentuais na saída do comando show processes cpu
Se você tiver a saída de um comando show processes cpu no dispositivo da Cisco, é possível utilizar o Cisco CLI Analyzer para exibir os possíveis problemas e correções.Para usar o Cisco CLI Analyzer, você deve ser um cliente registrado, estar conectado e com o JavaScript habilitado.
Desempenho lento
Os serviços no roteador não respondem, por exemplo:
Resposta lenta no Telnet ou impossível realizar o Telnet para o roteador
Resposta lenta no console
Resposta lenta ou ausente para efetuar ping
O roteador não envia atualizações de roteamento para outros roteadores
Muitas falhas de buffer
Depois que você observar qualquer um dos sintomas no Sintomas de alta utilização da CPU :
Veja se há um possível problema de segurança.Normalmente, a alta utilização da CPU é causada por um problema de segurança, como um worm ou vírus operando em sua rede.Essa é a causa mais provável se não tiverem sido feitas alterações recentes na rede.Normalmente, uma alteração na configuração, como a adição de linhas às listas de acesso, pode minimizar os efeitos desse problema.Os avisos e as diretrizes de segurança do produto da Cisco contêm informações sobre a detecção das causas mais prováveis e as alternativas específicas.
Para obter informações adicionais, consulte:
Verifique se todos os comandos de depuração no seu roteador estão desativados, emitindo os comandos undebug all ou no debug all.Para obter mais informações sobre o uso de comandos de depuração, consulte Uso de comandos de depuração.
Tem certeza de que deseja emitir comandos show no roteador?Caso afirmativo, comece a coletar mais informações imediatamente, usando esses comandos show.
O roteador está inacessível?É possível reproduzir esse problema?Em caso positivo, ligue e desligue o roteador e, antes de reproduzir o problema, configure o comando scheduler interval 500.Assim, estará programando os processos de baixa prioridade para serem executados a cada 500 milissegundos, fazendo com que tenha tempo de executar alguns comandos, mesmo que a utilização do CPU seja de 100 por cento.Nos roteadores Cisco 7200 e Cisco 7500 Series, use o comando scheduler allocate 3000 1000.
O roteador mostra sintomas de alto uso da CPU em intervalos breves ou imprevisíveis?Caso afirmativo, colete periodicamente a saída do comando show processes cpu, que mostra se a alta utilização da CPU é causada por interrupções ou por um determinado processo.Use este script UNIX e, com base nas primeiras descobertas, modifique o script para coletar dados necessários para uma investigação adicional do problema.
Para obter mais informações, consulte Solução de problemas de alta utilização da CPU provocada por interrupções.Se o nível da CPU aumentar devido a interrupções, provavelmente devido aos pacotes de switching CEF, ele não afeta o desempenho do roteador.
Se o NetFlow estiver configurado para a versão 7, o fluxo será realizado pelo processador de roteamento, o que ocasionar a alta utilização da CPU.
Para solucionar problemas de alta utilização da CPU devido ao Netflow versão 7, configure mls nde sender versão 5, conforme a exportação do Netflow é executada pelo SP, que é o padrão para versão 5 ou 9.
Verifique qual processo está carregando a CPU.Uma atividade incomum relacionada a um processo resulta em uma mensagem de erro no registro.Portanto, a saída do comando show logging exec deve ser verificada primeiro quanto a qualquer erro relacionado ao processo que consome muitos dos ciclos da CPU.
A depuração também pode ser bem útil na solução de problemas de alta utilização da CPU nos processos.No entanto, a depuração deve ser realizada com muito cuidado, pois pode aumentar ainda mais a utilização da CPU.Esses pré-requisitos devem ser seguidos para uma depuração segura e útil:
Todos os destinos de registro, com exceção do registro de buffer, devem ser desativados ou diminuírem o nível de gravidade do registro de 7 (depuração) para 6 (informativo) ou menos, usando o comando de configuração logging destination [severity-level] apropriado.Para ver quais destinos de registro e níveis correspondentes são habilitados, leia as linhas de cabeçalho do comando show logging exec.
O tamanho do buffer de registro deve ser aumentado para capturar informações suficientes.Para obter mais detalhes, consulte a descrição do comando de configuração global logging buffered.
Para ler e entender melhor as depurações, os carimbos de data/hora e milissegundo devem ser ativados.Para obter mais detalhes, consulte a descrição do comando de configuração global service timestamps.
Uma sessão de depuração de pacotes IP de amostra é fornecida em Solução de problemas de alta utilização da CPU nos processos de entrada de IP.
Para obter a solução de problemas de alta utilização da CPU em processos específicos, consulte o link apropriado:
EXEC —Alta utilização da CPU nos processos EXEC e Virtual EXEC
Entrada de IP – Solução de problemas de alta utilização da CPU devido ao processo de entrada de IP
Virtual EXEC — Alta utilização da CPU em processos Exec e Virtual Exec
Processo SSH — Pode aumentar se estiver capturando um show tech ou se algumas depurações estiverem habilitadas.
É normal observar pouca memória livre com pools de memória PCI e Fast.A memória PCI é usada para acesso à memória ao controlador GT64260 na placa principal PRP, para os barramentos PCI conectados a ele.Essa memória é usada para comunicação interna entre o controlador do sistema e outras peças, então ela parece estar ocupada o tempo todo.
Se for necessária mais memória, ela volta para a memória do pool de processador.A memória Fast é uma pequena quantidade de memória que tem sido reservada para uso pelas estruturas de dados do Interface Descriptor Block (IDB).Essa memória também é completamente reservada durante a inicialização, então sempre é mostrada como ocupada, pois é totalmente utilizada.Por causa disso, é normal observar pouca memória livre com o pool de memória Fast.
A mensagem de hog da CPU é semelhante a:
SNMP-4-HIGHCPU: Process exceeds 200ms threshold (200ms IOS quantum) for GET of rmon.19.16.0--result rmon.19.16.0
Uma nova mensagem de syslog (HIGHCPU) foi adicionada ao IOS em 12.4(13). Se um processo ocupa a CPU por mais de 200 ms, ele relata uma mensagem HIGHCPU.A mensagem HIGHCPU não afeta o roteador.Ela apenas permite que você saiba qual processo causou a alta utilização da CPU.A mensagem HIGHCPU é semelhante à mensagem CPUHOG, mas a mensagem HIGHCPU tem um limite de tolerância a falhas bem mais baixo, a 1/10 da quantidade de tempo, em comparação com uma mensagem CPUHOG, ou seja, medido em milissegundos. Em versões anteriores a 12.4(13) no 2600, os processos foram executados durante mais tempo, mas não geraram mensagens, porque as versões do IOS não tinham esse aprimoramento.
A PDU de SNMP de processamento (consultas de objeto MIB) deve ser executada em uma única fatia de tempo (“time quantum”) de CPU para garantir que cada objeto da PDU seja recuperado como se fosse simultâneo.Isso é uma exigência fundamental imposta pelo protocolo SNMP padrão.Alguns objetos são agregados de muitos dados no sistema, portanto, mesmo sendo objetos únicos, há uma grande quantidade de processamento envolvido, devido à forma de instrumentação.Se eles não abandonarem a CPU, conforme exigido pelas regras de instrumentação do MIB, essa mensagem de erro poderá aparecer.Além disso, se você sonda vários objetos diferentes no mesmo grupo de objetos/tabela e recebe a mensagem de erro, isso não é incomum devido ao mesmo motivo.
Essa mensagem é usada para identificar objetos que usam mais tempo de CPU que o esperado (mas ainda não CPUHOG). Algumas ferramentas de NMS/instrumentação não funcionam bem durante a sondagem.Esse problema está documentado na ID do Cisco Bug CSCsl18139 (somente para clientes registrados).
Quando não há nenhum módulo de criptografia de hardware instalado no dispositivo, então todo o tráfego criptografado proveniente do dispositivo precisa ser criptografado pelo software.Isso ocupa muita CPU.É recomendável não usar a criptografia de software para qualquer implantação de criptografia com um requisito de produtividade razoável.Uma opção para resolver esse problema é reduzir o volume de tráfego criptografado (rotear novamente o tráfego ou limitar os fluxos criptografados). No entanto, a melhor maneira de solucionar esse problema é instalar um módulo de criptografia de hardware neste dispositivo, eliminando a necessidade de criptografia do software.
Observação: a ativação de mapas de criptografia em interfaces de túnel/física é um processo de consumo de memória e pode causar um aumento na CPU.
Os reagrupamentos podem aumentar muito a utilização da CPU, se ela precisar reagrupar um grande número de pacotes.
Para solucionar problemas de alta utilização da CPU devido à fragmentação, emita o tcp mss-adjust 1400 na interface que define o valor do tamanho máximo de segmento (MSS) dos pacotes de sincronização/início (SYN) de TCP que passam por um roteador.
Esses comandos fornecem mais informações sobre o problema.
Se o roteador é totalmente inacessível, desligue e ligue-o primeiro.Em seguida, colete periodicamente a saída dos comandos nesta seção, exceto para o comando show log, cujas mensagens devem estar registradas em um servidor syslog.O intervalo para a coleta de saída deve ser de cinco minutos.Você pode coletar os dados manual ou automaticamente, usando esse UNIX shell script.Você também pode coletar dados usando HTTP ou SNMP.Para obter detalhes sobre como configurar HTTP e SNMP em um roteador Cisco, consulte o documento de configuração do Software Cisco IOS.
Este é um exemplo do cabeçalho do comando show processes cpu:
CPU utilization for five seconds: X%/Y%; one minute: Z%; five minutes: W% PID Runtime(ms) Invoked uSecs 5Sec 1Min 5Min TTY Process
Esta tabela descreve os campos no cabeçalho:
Campo | Descrição |
---|---|
X | A utilização total média durante os últimos cinco segundos (interrupções + processos) |
Y | Utilização média devido a interrupções durante os últimos cinco segundos1 |
Z | Utilização total média durante o último minuto2 |
W | A utilização média total durante os últimos cinco minutos2 |
PID | ID de Processo |
Tempo de execução | O tempo da CPU usado pelo processo (em milissegundos) |
Chamado | Número de vezes que um processo foi chamado |
uSecs | Microssegundos de tempo da CPU para cada chamada |
5Sec | Utilização da CPU por tarefa nos últimos cinco segundos |
1min | Utilização do CPU por tarefa nos últimos 2 minutos |
5Min | Utilização da CPU por tarefa nos últimos cinco minutos2 |
TTY | Terminal que controla o processo |
Processo | Nome do processo |
1Utilização de CPU no nível de processamento = X - Y
2 Os valores não representam uma média aritmética, mas uma média exponencialmente reduzida.Portanto, valores mais recentes têm mais influência na média calculada.
Use esse enlace, para obter uma explicação detalhada do comando show processes cpu.
Observação: a utilização total da CPU não deve ser usada como medida da capacidade do roteador de comutar mais pacotes.Nos roteadores Cisco 7500, os processadores de interface versáteis (VIPs) e os processadores de roteamento/switch (RSP) não relatam a utilização linear da CPU.Aproximadamente a metade da capacidade de switching pacote por segundo é fornecida após 90 a 95 de utilização da CPU.
O comando reference contém uma explicação detalhada do comando show interfaces.
Este comando é utilizado para determinar caminhos de switching ativos nas interfaces.Para obter mais informações sobre caminhos de comutação no software Cisco IOS, consulte o documento Configuring Switching Paths (Configurando caminhos de comutação).
Esta é uma saída de exemplo do comando show interfaces switching para uma interface:
RouterA#show interfaces switching Ethernet0 Throttle count 0 Drops RP 0 SP 0 SPD Flushes Fast 0 SSE 0 SPD Aggress Fast 0 SPD Priority Inputs 0 Drops 0 Protocol Path Pkts In Chars In Pkts Out Chars Out Other Process 0 0 595 35700 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IP Process 4 456 4 456 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 IPX Process 0 0 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 Trans. Bridge Process 0 0 0 0 Cache misses 0 Fast 11 660 0 0 Auton/SSE 0 0 0 0 DEC MOP Process 0 0 10 770 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 ARP Process 1 60 2 120 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0 CDP Process 200 63700 100 31183 Cache misses 0 Fast 0 0 0 0 Auton/SSE 0 0 0 0
Como a saída lista os caminhos de switching de todos os protocolos configurados na interface, você pode facilmente ver que tipo e que quantidade de tráfego está passando pelo roteador.A tabela explica os campos de saída.
Campo | Definição |
---|---|
Processo | Pacotes processados.Podem ser pacotes destinados ao roteador ou pacotes para os quais não há nenhuma entrada no cache de switching rápida. |
Falhas de cache | Os pacotes para os quais não havia entrada no cache de switching rápida.O primeiro pacote deste destino (ou fluxo – depende do tipo de switching rápida que estiver configurado) será processado.Todos os pacotes subseqüentes serão comutados rapidamente, a menos que a switching rápida esteja explicitamente desativada na interface de saída. |
Rápido | Pacotes Fast SwitchedA switching rápida está habilitada por padrão. |
Auton/SSE | Pacotes de switch autônomo, pacotes de switch de silício e pacotes de switch distribuídos.Disponíveis somente nos roteadores Cisco 7000 Series com um processador de switch ou um processador de switch de silício (para switching autônomos ou switching de silício, respectivamente) ou nos roteadores Cisco 7500 Series com um VIP (para switching distribuído). |
Este comando é uma versão resumida do comando show interfaces switching.Este é o exemplo de saída de uma interface:
RouterA#show interfaces stat Ethernet0 Switching path Pkts In Chars In Pkts Out Chars Out Processor 52077 12245489 24646 3170041 Route cache 0 0 0 0 Distributed cache 0 0 0 0 Total 52077 12245489 24646 3170041
A saída do comando show interfaces stat é diferente para plataformas distintas, dependendo dos caminhos de switching disponíveis e configurados.
O comando show ip nat translations exibe as conversões de Network Address Translation (NAT) ativas no roteador.Cada conversão ativa gera interrupções da CPU e afeta a utilização da CPU total do roteador.Um número muito grande de conversões pode afetar o desempenho no roteador.
Veja abaixo um exemplo do comando show ip nat translations:
router#show ip nat translations Pro Inside global Inside local Outside local Outside global --- 172.16.131.1 10.10.10.1 --- ---
Este comando está disponível somente em plataformas baseadas em processador de RISC (Computação de conjunto de instruções reduzido).Nessas plataformas, a CPU pode corrigir as leituras ou gravações de memória desalinhadas.Aqui estão alguns exemplo de saída:
Alignment data for: 4500 Software (C4500-DS40-M), Version mis-aligned RELEASE SOFTWARE (fc1) Compiled Tue 31-Mar-98 15:05 by jdoe Total Corrections 33911, Recorded 2, Reads 33911, Writes 0 Initial Initial Address Count Access Type Traceback 40025F4D 15561 16bit read 0x606F4A7C 0x601C78F8 0x6012FE94 0x600102C0 40025F72 18350 32bit read 0x606FB260 0x6013113C 0x600102C0 0x60010988
Com o fim de rastrear problemas de elevada utilização do CPU, a parte importante dessa saída de comando são a versão de Software Cisco IOS, a plataforma, o tipo de CPU e o período operacional do roteador.A referência de comando fornece uma explicação detalhada do comando show version.
Este comando mostra o conteúdo das mensagens de registro no buffer.Para obter mais informações sobre as mensagens de acesso ao sistema, consulte a seção Log System Error Messages (Mensagem de erro para acesso ao sistema) do Troubleshooting the Router configuration guide (Manual de solução de problemas sobre configuração de roteadores).
Este apêndice descreve um script simples para capturar dados periodicamente a partir do roteador.O centro do script está nesta linha:
(echo "show version") | telnet 192.168.1.1
O comando entre parênteses é executado em subgrupos shell e a saída é enviada para uma sessão Telnet.Este é um exemplo de script para captura da saída dos comandos show version e show processes cpu.
#!/opt/local/bin/bash ########################################### # Router's IP address # IP_ADDRESS='10.200.40.53' # Directory where the log files will be stored # DIR=/var/log/router ######################################## if [ ! -e $DIR ] then mkdir $DIR fi # Tag specification: mmddhhmm DATE=`date +'%m%d'` TIME=`date +'%H%M'` TAG=$DATE$TIME # Collect data from the router (echo "foo";\ echo "bar";\ echo "term len 0";\ echo "show version";\ echo "show processes cpu";\ echo "term len 15";\ echo "show memory summary";\ echo "q";\ sleep 30)|telnet $IP_ADDRESS > $DIR/info.$TAG 2>$DIR/info.$TAG.msg
Observação: neste script todos os dados, incluindo a senha, são enviados em um formato de texto claro.
Na primeira seção, você precisa especificar o endereço IP e o diretório de destino de arquivos de registro.A segunda seção contém os comandos reais que são enviados ao roteador.O primeiro é o nome de usuário e, em seguida, a senha e assim por diante.Um truque para a captura apenas das primeiras linhas de saída de determinados comandos está incluído.O comprimento do terminal é definido como um valor pequeno (15, neste caso), e o caractere "q" só é enviado quando solicitado.
Se os dados forem coletados periodicamente, a saída do comando show version mostra se o problema tem natureza periódica, por exemplo, se ele aparece sempre em uma determinada hora do dia ou em um dia específico da semana.Se você precisar coletar a saída de mais comandos, eles poderão ser adicionados ao roteiro da mesma forma mostrada no exemplo.Se você precisar truncar a saída enviada ao arquivo, primeiro aumente o período de inativação (o comando sleep entre parênteses).
Execute este script a cada cinco minutos se o problema de alta utilização da CPU aparecer com frequência e não durar muito.Caso contrário, você pode executar a cada 15 ou 30 minutos.Para mais facilidade de uso, salve o script em um arquivo como /usr/bin/router-script..Em seguida, execute-o a cada cinco minutos, adicione a linha a seguir ao arquivo /etc/crontab:
*/5 * * * * /usr/bin/router-script
Reinicie o servidor cron.Se você não tiver autoridade para alterar o arquivo /etc/crontab, execute o script em um processo separado, como este:
while [ 1 ]; do ./router-script ; sleep 300; done &