Этот документ был переведен Cisco с помощью машинного перевода, при ограниченном участии переводчика, чтобы сделать материалы и ресурсы поддержки доступными пользователям на их родном языке. Обратите внимание: даже лучший машинный перевод не может быть настолько точным и правильным, как перевод, выполненный профессиональным переводчиком. Компания Cisco Systems, Inc. не несет ответственности за точность этих переводов и рекомендует обращаться к английской версии документа (ссылка предоставлена) для уточнения.
В этом документе объясняются общие симптомы и причины высокой загруженности CPU в маршрутизаторах Cisco и даются указания и решения по устранению неполадок.
Для устранения проблемы высокой загрузки процессора на маршрутизаторах Cisco необходимо понимать пути коммутации программного обеспечения Cisco IOS. Информацию о коммутируемых путях ПО Cisco IOS см. в разделе Основы настройки производительности.
Настоящий документ не имеет жесткой привязки к каким-либо конкретным версиям программного обеспечения и оборудования.
Данный список содержит распространенные симптомы высокой загрузки CPU. Если присутствует любой из описанных признаков, для разрешения проблемы выполните действия по устранению неполадок, приведенные в данном документе.
Высокие проценты в выходных данных команды show processes cpu
Если у вас есть выходные данные команды show processes cpu, выполненной на устройстве Сisco, то можно с помощью Cisco CLI Analyzer показать потенциальные проблемы и способы их исправления. Для использования Cisco CLI Analyzer необходимо быть зарегистрированным заказчиком, выполнить вход и разрешить JavaScript.
Медленная работа
Службы маршрутизатора не отвечают, например:
Задержка ответа Telnet, или невозможно получить доступ к маршрутизатору по протоколу Telnet
Медленный ответ на консоли
Медленный или безответный для запроса ping
Маршрутизатор не отправляет обновления маршрута другим маршрутизаторам
Высокий процент ошибок буфера
Если вы заметили какие-либо признаки высокой загрузки процессора:
Проверьте наличие проблем, связанных с безопасностью. Как правило, высокая загрузка ЦП бывает обусловлена именно проблемами такого рода, например функционированием вредоносной программы (червя или вируса) в сети. Вероятнее всего это является причиной, если в сети не было недавних изменений. Обычно для ограничения негативных последствий этой проблемы бывает достаточно добавить строки в списки доступа. Раздел Сообщения и заметки по безопасности продуктов Cisco содержит информацию по выявлению наиболее вероятных причин и конкретные способы их устранения.
Дополнительную информацию см. в следующих разделах:
Убедитесь, что все команды отладки в вашем маршрутизаторе отключены, выполнив команду undebug all или no debug all. Дополнительную информацию об использовании команд отладки см. в разделе Использование команд отладки.
Удается ли применить команды show на маршрутизаторе? Если это так, немедленно начните сбор дополнительной информации, а затем воспользуйтесь следующими командами show.
Маршрутизатор недоступен? Можете ли вы воспроизвести эту проблему? Если да, выключите и включите маршрутизатор, а перед воспроизведением проблемы настройте команду scheduler interval 500. В результате, выполнение процессов с низким приоритетом будет запланировано с интервалом в 500 миллисекунд, благодаря чему появится время для запуска некоторых команд, даже если CPU используется на все 100%. На маршрутизаторах Cisco серий 7200 и 7500 используйте команду scheduler allocate 3000 1000.
Проявляет ли маршрутизатор признаки высокого уровня загрузки CPU в течение кратких и непредсказуемых интервалов? Если да, регулярно собирайте выходные данные команды show processes cpu, которые отображают причину высокой загрузки ЦП, если она вызвана прерываниями или отдельным процессом. Используйте сценарий UNIX, и на основании первых полученных данных модифицируйте сценарий для сбора данных, необходимых для дальнейшего исследования проблемы.
Дополнительную информацию см. в разделе Troubleshooting High CPU Utilization Caused by Interrupts (Устранение проблем высокой загрузки процессора, вызванных прерываниями). Если загрузка процессора повышается из-за прерываний, которые, скорее всего, вызваны коммутацией пакетов CEF, то загрузка процессора не влияет на производительность работы маршрутизатора.
Если NetFlow настроен для версии 7, то поток выполняется процессором маршрутизации, который мог вызвать высокую загрузку процессора.
Проверьте, какой процесс является источником нагрузки на процессор. Необычная активность, относящаяся к процессу, приводит к сообщению об ошибках в журнале. Таким образом, выходные данные команды show logging exec следует проверить, в первую очередь, на наличие любых ошибок, относящихся к процессу, использующему большое количество циклов ЦП.
Отладка также является очень полезной при устранении проблемы высокой загруженности ЦП процессами. Однако отладку следует выполнять очень осторожно, поскольку это может привести к еще большей загрузке ЦП. Отладка будет безопасной и эффективной при выполнении следующих предварительных условий:
Все журналы регистрации, за исключением журнала регистрации сведений для буферов, должны быть отключены или уровень важности протоколируемых в них сведений должен быть понижен с 7 (отладка) до 6 (информационный) или ниже при помощи соответствующей команды настройки logging destination [уровень важности]. Сведения о включенных журналах регистрации и уровнях важности протоколируемых в них сведений содержатся в строках заголовка выходных данных команды show logging exec.
Размер буфера регистрации необходимо увеличить, чтобы он вмещал всю необходимую информацию. Дополнительные сведения см. в описании команды глобальной настройки logging buffered.
Чтобы облегчить восприятие и понимание отладки, следует включить временные отметки в миллисекундах, а также дату и время. Дополнительную информацию см. в описании команды глобальной настройки service timestamps.
Для решения проблемы высокой загрузки ЦП конкретными процессами используйте соответствующую ссылку:
EXEC— Высокая загрузка процессора в EXEC и виртуальных процессах EXEC
IP Input — устранение проблем высокой загрузки ЦП из-за процесса ввода IP
IP Simple Network Management Protocol (SNMP) — IP-протокол SNMP вызывает высокую загрузку процессора
Virtual Exec — высокая загрузка ЦП в Exec и процессах Virtual Exec
Процесс SSH может вызвать высокую нагрузку при получении show tech или в случае, если включены некоторые виды отладки.
Это нормально, если мал объем свободной памяти при использовании пулов быстродействующей памяти и PCI. Память PCI служит для доступа памяти к контроллеру GT64260 на системной плате PRP для подключенных к ней шин PCI. Эта память служит для внутреннего обмена данными между системным контроллером и другими компонентами, поэтому она будет все время показывать высокую загрузку.
Если необходимо больше памяти, то происходит переключение на память пула процессора. Быстродействующая память имеет небольшой объем и резервируется для использования под структуры данных блока дескриптора интерфейса оборудования (IDB). Эта память также полностью резервируется в течение всей загрузки, поэтому отображается как полностью использованная. Поэтому указание на нехватку свободной памяти с пулом быстродействующей памяти — это нормально.
Сообщение о загрузке ЦП выглядит примерно так:
SNMP-4-HIGHCPU: Process exceeds 200ms threshold (200ms IOS quantum) for GET of rmon.19.16.0--result rmon.19.16.0
Новое сообщение системного журнала (HIGHCPU) добавлено в IOS 12.4(13). Если процесс занимает ЦП более 200 мс, то выдается сообщение HIGHCPU. Сообщение HIGHCPU не оказывает влияния на маршрутизатор. Это просто указание на процесс, который вызвал высокую загрузку ЦП. Сообщение HIGHCPU аналогично сообщению CPUHOG, но имеет намного более низкий порог допуска, 1/10 времени по сравнению с CPUHOG, в миллисекундах). В версиях до 12.4(13) на 2600 процессы работали дольше, но выдавали сообщения, так как версии IOS не имели этого усовершенствования.
Обработка PDU SNMP (запросы управляемых объектов MIB) должна выполняться за один квант времени ЦП, чтобы гарантировать, что каждый объект в PDU извлекается как при одновременном доступе. Это требование диктуется стандартом протокола SNMP. Некоторые объекты являются агрегатами больших объемов данных в системе, поэтому их обработка будет ресурсоемкой, даже если они являются отдельными объектами. Если они не освобождают ЦП, как требуется правилами набора средств MIB, возможно появление этого сообщения об ошибке. Кроме того, если опрашивается несколько других объектов в той же группе объектов или таблице и возникает сообщение об ошибке, это является обычным явлением по той же причине.
Это сообщение служит для выявления объектов, использующих больше времени процессора, чем ожидалось (но меньше CPUHOG). Некоторые инструменты и системы управления сетями плохо работают при опросах. Эта проблема описана в документе об ошибке Cisco с идентификатором CSCsl18139 (только зарегистрированные заказчики).
Если на устройстве не установлен модуль аппаратного шифрования, то весь проходящий через устройство поток данных должен шифроваться программно. Это создает очень высокую нагрузку на ЦП. Не рекомендуется использовать программное шифрование для развертываний с достаточно высокими требованиями к пропускной способности. Один из вариантов решения этой проблемы — сокращение объема зашифрованного потока данных (перенаправьте трафик или ограничьте число шифруемых потоков). Но лучший способ решить эту проблему — установить модуль аппаратного шифрования на этом устройстве. Это избавит от необходимости программного шифрования.
Примечание. Включение криптокарт на туннеле или физических интерфейсах — ресурсоемкий процесс. Может вызвать увеличение нагрузки на ЦП.
Повторная сборка может привести к очень высокой загрузке ЦП, если ему приходится повторно собирать большое число пакетов.
Эти команды позволяют получить дополнительные сведения о сбое:
Если маршрутизатор совершенно недоступен, сначала выключите и включите его. Затем периодически собирайте выходные данные команд в этом разделе, за исключением команды show log, сообщения от которой должны регистрироваться на сервере системного журнала. Выходные данные следует собирать с интервалом 5 минут. Данные можно собирать вручную или автоматически, используя этот сценарий оболочки UNIX. Можно также выполнить сбор данных с помощью HTTP или SNMP. Дополнительную информацию о настройке HTTP и SNMP на маршрутизаторе Cisco см. в разделе Настройка ПО Cisco IOS.
Это пример заголовка команды "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
В следующей таблице описаны поля этого заголовка:
Поле | Описание |
---|---|
X | Среднее суммарное использование за последние пять секунд (прерывания + процессы), |
Y | Средний уровень использования из-за прерываний за последние пять секунд1 |
Z | Средняя общая загруженность в течение последней минуты 2 |
W | Среднее суммарное использование за последние пять минут 2 |
PID | Идентификатор процесса |
Время выполнения | Время CPU, использованное процессом (в миллисекундах) |
Invoked | Число вызовов процесса |
uSecs | Время CPU в микросекундах для каждого вызова процесса |
5Sec | Использование CPU заданием в последние пять секунд |
1Min | Использование CPU заданием в последние две минуты |
5 мин | Использование ЦП задачей за последние пять минут2 |
TTY # | Управляющий процессом терминал |
Процесс | Имя процесса |
1CPU используется на уровне процесса = X - Y
2Values — соответствует не арифметическому среднему, а экспоненциально затухающему среднему. Таким образом, последние значения больше влияют на рассчитанное среднее.
Используйте этот канал для получения подробного описания команды show processes cpu.
Примечание.Суммарное использование ЦП не следует интерпретировать как показатель способности маршрутизатора коммутировать большее число пакетов. В маршрутизаторах Cisco 7500 универсальные интерфейсные процессоры (VIP) и процессоры маршрутизации/коммутации (RSP) не сообщают о линейном использовании ЦП. Почти половина мощности коммутации в пакетах в секунду поступает после 90-95% загрузки CPU.
В справочнике по команде есть подробное объяснение команды "show interfaces".
Эта команда используется для определения активных путей маршрутизации на интерфейсах. Дополнительные сведения о коммутируемых путях в Cisco IOS см. в документе "Настройка коммутируемых путей".
Ниже приводится пример выходных данных команды show interfaces switching для одного интерфейса:
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
Выход перечисляет пути коммутации для всех сконфигурированных на интерфейсе протоколов, так что вы можете легко увидеть, какой тип и количество трафика проходит через маршрутизатор. В этой таблице описаны поля выходных данных.
Поле | Определение |
---|---|
Процесс | Обработанные пакеты. Это могут быть пакеты, предназначенные для маршрутизатора, или пакеты, для которых не было входа в кэш-память быстрого переключения. |
Cache misses | Пакеты, для которых не было записей в кэше быстрой коммутации. Будет обработан первый пакет для этого пункта назначения (или поток – зависит от типа настроенной быстрой коммутации). Все последующие пакеты будут быстро переключаться, если только быстрое переключение не будет специально отключено на исходящем интерфейсе. |
Fast | Быстрая коммутация пакетов. Быстрая коммутация включена по умолчанию. |
Auton/SSE | Пакеты с автономной коммутацией, пакеты с коммутацией с помощью кремниевых процессоров и пакеты с распределенной коммутацией. Доступны только на маршрутизаторах Cisco серии 7000 с процессором коммутации или кремниевым процессором коммутации (для автономной коммутации или коммутации с использованием кремниевых устройств соответственно) либо на коммутаторах Cisco серии 7500 с процессором VIP (для распределенной коммутации). |
Эта команда – объединенная версия команды show interfaces switching. Это пример выходных данных для одного интерфейса:
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
Выходные данные команды show interfaces stat на разных платформах отличаются друг от друга, в зависимости от доступных и настроенных коммутируемых путей.
Команда show ip nat translations отображает активные трансляции NAT на маршрутизаторе. Каждая активная трансляция генерирует прерывания ЦП и влияет на суммарное использование ЦП маршрутизатора. Большое число трансляций может повлиять на производительность маршрутизатора.
Это примерный результат команды 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 --- ---
Данная команда доступна только на процессорных платформах RISC. В этих платформах CPU может корректировать нарушения выравнивания для чтения и записи в память. Ниже приведен пример выходных данных:
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
Отслеживание проблем высокой загрузки CPU делает важной частью выхода данной команды версию программного обеспечения Cisco IOS, платформу, тип CPU и время работы маршрутизатора. В справочнике по команде приведено подробное описание команды show version.
Эта команда отображает сообщения с промежуточными данными журнала регистрации. Дополнительные сведения о регистрации системных сообщений см. в разделе "Запись системных сообщений об ошибках" руководства "Устранение неполадок при настройке маршрутизатора".
В этом приложении описывается простой сценарий для периодического снятия данных с маршрутизатора. Ядром сценария является эта строка:
(echo "show version") | telnet 192.168.1.1
Команда в скобках выполняется в подоболочке, а результат выполнения передается сеансу Telnet. Это пример сценария для захвата выходных данных команд show version и 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
Примечание.В этом сценарии все данные, включая пароль, передаются в формате открытого текста.
В первом разделе необходимо указать IP-адрес и каталог получателя для файлов журнала. Второй раздел содержит фактические команды, посылаемые на маршрутизатор. Сначала имя пользователя, затем пароль и т. д. Имеется способ для вывода только первых строк выходных данных некоторых команд. Длина терминала установлена небольшой (в данном случае она равна 15), а символ "q" послан только при помощи командной строки.
Если сбор данных проводится периодически, вывод команды show version указывает, периодически ли происходит проблема, например, если она происходит в определенное время дня или определенный день недели. Если необходимо собрать выходные данные для большего числа команд, их следует добавить в сценарий способом, аналогичным использованному в примере. При необходимости обрезать выходные данные, отправляемые в файл, сначала увеличьте период ожидания (команда sleep в скобках).
Выполняйте этот сценарий каждые 5 минут, если проблема высокой загрузки ЦП возникает часто и на кратковременный период. В других обстоятельствах его можно выполнять каждые 15 или 30 минут. Для облегчения использования сохраните сценарий в файле, например /usr/bin/router-script. Затем, чтобы запланировать выполнение сценария через каждые 5 минут, добавьте следующую строку в файл /etc/crontab:
*/5 * * * * /usr/bin/router-script
Перезапустите сервер cron. Если вы не имеете прав на изменение файла /etc/crontab, запустите сценарий в отдельном процессе, например:
while [ 1 ]; do ./router-script ; sleep 300; done &