关于High CPU及基本排查
在实际的网络中,总会存在设备出现high CPU的情况,这种情况下,往往会让网络管理员比较着急,因为如果CPU持续high,可能导致设备的性能降低,严重还可能导致设备down掉。
本篇记录,主要记录一下关于high CPU的一些基本知识以及排查的方法。
1、关于high CPU
当设备启动完成后,CPU具有两个不同的功能,其一,是在IOS下运行不同的进程(Process);其二,是CPU从交换硬件中发送/接收报文进行处理。CPU同时执行这两个功能。
不管是IOS Process占用了太多的CPU还是CPU从硬件收到太多的报文,都会导致CPU high,这两者都会相互影响,例如,当CPU忙于处理收到的大量的报文,那么可能导致IOS Process无法访问CPU资源。
在正常情况下,在一些非堆叠的交换机上,CPU有一定的基线利用率,根据设备型号和类型,这个范围可以从5%到40%(设备设计上的差异),如果交换机是堆叠的,那么CPU的至少可以正常运行几个百分点利用率,堆叠中的成员数量会对整体的CPU利用率产生影响。在堆叠交换机中,CPU利用率仅仅在Master交换机上体现。另外,交换机不会报告0%的CPU利用率,因为在后台运行多个IOS进行,每秒都会执行多次。
One of the reasons that different ranges and models within those ranges will differ in the baseline utilization is differences in design. Where the earlier models of the switches with little usage of microcontrollers, the later ones do utilize these more. As more tasks are being offloaded to those microcontrollers there is an increase in communication between the CPU and the microcontrollers. The processes this will be reported under are the HULC led and the Redearth Tx an Rx processes.
通过show processes cpu sorted命令,可以看到CPU在过去5秒,1分钟,5分钟的繁忙情况,也可以看到每个系统进程对CPU占用的百分比。
Switch# show processes cpu sorted
5%——告知CPU在最近5秒的繁忙情况,这个是活跃的系统进程CPU利用率的总量,包括了interrupt level的百分比。
0%——体现的是在最近5秒interrupt level的百分比占用情况。interrupt百分比是CPU花在从交换机硬件接收的数据包上的,该百分比总是小于等于总的CPU利用率。
在一些例子中,CPU飙升可能是一些已知的网络事件,例如执行“write memory”、“A Large L2 Network”拓扑发生改变”、“IP路由表的更新”、“其他IOS命令”等。
- A Large L2 Network”拓扑发生改变:STP的计算,实例越多,活跃的接口越多,越可能出现。
- IP路由表更新:更新的路由表越大,周期越频繁,接收更新的路由协议进程数量,存在任何route map或者filters等情况都可能导致。
- IOS命令:show tech、write memory、show-running configuration、debug等命令
- 其他事件:
频繁或大量的IGMP请求,CPU会处理IGMP消息;
大量的IP SLA监控会话,CPU会生成ICMP或者traceroute数据包;
SNMP轮询活动,特别是MIB walk,Cisco IOS SNMP engine执行SNMP请求;
大量同时发出的DHCP请求;
ARP广播风暴;
Ethernet广播风暴。
high CPU会影响系统进程正常运行,当系统进程不执行时,交换机或直接连接的网络设备会反映对网络问题,对于L2网络,可能会发生STP从新收敛,对于L3网络,路由拓扑可能发生变化。
当交换机CPU high时可能出现的已知症状:
2.2.1、STP topo change:当二层网络设备未在RP上及时收到STP BPDU时,它会将Root Switch的二层路径视为down,并且交换机会尝试查找新路径,那么STP将会重新收敛。
2.2.2、routing topo change:例如BGP路由震荡或OSPF路由震荡。
2.2.3、EtherChannel链路反弹:当EtherChannel另一端的网络设备没有收到维护EtherChannel链路所需的协议数据包时,这可能导致链路断开。
- ICMP ping 请求
- SNMP timeout
- Telnet或SSH会话很慢或不能建立
- UDLD flapping
- IP SLAs failures
- DHCP或802.1x failures
- 丢包或者延迟增加
- HSRP flapping
2.3 确定中断百分比
CPU利用率历史记录仅显示随时间变化的总CPU利用率。它不显示中断所花费的CPU时间。了解中断所花费的时间对于确定CPU利用率的原因至关重要。 CPU利用率历史记录显示CPU何时持续接收网络数据包,但未显示原因。
输入Cisco IOS设备输入show processes cpu sorted 5sec 命令以显示当前CPU利用率以及哪些IOS进程占用的CPU时间最多。正常情况下,中断百分比大于0%且小于5%。中断百分比可以在5%到10%之间。应调查超过10%的中断百分比。
在三层交换机上,当IP route未知时,交换机硬件将会把IP数据包发送到CPU进行IP routing,发送的数据包会在interrupt level处理,并且会导致CPU繁忙。 如果命令输出中显示的中断百分比很高,但是最活跃的进程不是上表中所示的那些,或者没有任何进程看起来足够有效证明CPU利用率,那么高CPU利用率很可能是由于被发送到CPU的数据包引起的,示例输出中显示。
Switch# show processes cpu sorted 5sec
监视CPU接收队列的数据包计数
如果交换机被特定数据包类型泛洪,则硬件会将该数据包类型放入适当的CPU队列并对其进行计数。 输入show controllers cpu-interface 命令以查看每个队列的数据包计数。
Switch # show controllers cpu-interface
输入show platform port-asic stats drop 命令以查看CPU接收队列丢弃计数并识别丢弃数据包的队列。 此命令没有show controllers cpu-interface命令那么有用,因为输出显示接收队列的数字而不是名称,并且它仅显示丢弃。 由于交换机硬件将CPU接收队列丢弃的数据包视为发送给管理程序,因此丢弃的数据包在命令输出中称为Supervisor TxQueue Drop Statistics。
统计信息不会重置。 多次输入命令以查看活动队列丢弃。 命令输出还显示其他丢弃统计信息,其中一些在示例中被截断。
关于High CPU及基本排查的更多相关文章
- Java进程CPU使用率高排查
Java进程CPU使用率高排查 生产java应用,CPU使用率一直很高,经常达到100%,通过以下步骤完美解决,分享一下.1.jps 获取Java进程的PID.2.jstack pid >> ...
- CPU高问题排查
双11大战开始了,这几天公司系统压测,CPU各种报警,于是找了篇关于CPU高问题排查的文章. 一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环. (友情提示:本博文章欢迎 ...
- Linux(2)---记录一次线上服务 CPU 100%的排查过程
Linux(2)---记录一次线上服务 CPU 100%的排查过程 当时产生CPU飙升接近100%的原因是因为项目中的websocket时时断开又重连导致CPU飙升接近100% .如何排查的呢 是通过 ...
- 一次erlang 节点CPU严重波动排查
新服务上线后观察到,CPU在10 ~ 70%间波动严重,但从每秒业务计数器看业务处理速度很平均. 接下来是排查步骤: 1. dstat -tam 大概每10s一个周期,网络流量开始变得很小,随后突然增 ...
- 生产环境下JAVA进程高CPU占用故障排查
问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...
- cpu iowait高排查的case
在之前的常见的Java问题排查方法一文中,没有写cpu iowait时的排查方法,主要的原因是自己之前也没碰到过什么cpu iowait高的case,很不幸的是在最近一周连续碰到了两起cpu iowa ...
- SQL 数据库高CPU占用语句排查
前述 最近一个项目CPU占用非常高,在IIS内设置CPU限制后系统频繁掉线,通过任务管理器发现SQLSever数据库占用CPU达到40%--70%,对于数据库本人也就处在增删查改几个操作水平层面,这次 ...
- JAVA程序CPU 100%问题排查
做JAVA开发的同学一定遇到过的爆表问题,看这里解决 https://www.cnblogs.com/qcloud1001/p/9773947.html 本文由净地发表于云+社区专栏 记一次Ja ...
- 生产环境JAVA进程高CPU占用故障排查
问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 问题分析:1,程序属于CPU密集型,和开发沟通过, ...
- Java线上应用故障之CPU占用高排查与定位
最近线上频繁报警CPU空闲不足,故紧急排查后分享给大家 1.使用top命令,获取占用CPU最高的进程号 2.查看线程号对应的进程信息 命令:ps -ef|grep 22630 3.查看进程对应的线程信 ...
随机推荐
- Strategic game树形DP解法(Poj1463,Uva1292)
已经写过本题用二分图的做法,见这儿. 本题的图是一棵树,求最小点覆盖也可以用树形DP的做法. 定义状态f[0/1][u]表示以u为根的子树,u选取/不选最少需要选取多少点来覆盖. 显然 f[0][u] ...
- Stream中的map
#map可以让一个对象A的流转换为宁外一种对象B的流(其实也是A对象元素组成的流) 1.对象转换为List集合 //若Eticket是一个对象,其中orderId是String类型 //eticket ...
- dubbo学习(一)认识
部分图片和表述来自dubbo官网 dubbo 概述 背景 这是一个服务端架构发展的路径图 下面我们介绍后面两种,dubbo 正是处于RPC 范畴内的使用. 分布式服务架构 当垂直应用越来越多,应用之间 ...
- 后端工具——Maven——初篇——目录
目录 Maven的知识体系包括四个部分.Maven的配置文件,Maven命令,Maven生命周期,Maven插件.在介绍Maven之前,首先需要介绍如何安装Maven. 安装:介绍Maven在Linu ...
- Cut Ribbon
Polycarpus has a ribbon, its length is n. He wants to cut the ribbon in a way that fulfils the follo ...
- 什么是JWT令牌认证?
当下,JWT(JSON Web Token)令牌认证已经变得越来越流行.本文主要介绍JWT令牌认证与传统的Session会话认证机制的区别. 为什么需要认证? HTTP是一种无状态协议,那就意味着当前 ...
- JS高级---案例:随机小方块 (贪吃蛇的食物部分)
案例:随机小方块 产生随机数对象,自调用构造函数 产生小方块对象,自调用构造函数,里面存放: 食物的构造函数 给原型对象添加方法:初始化小方块的显示的效果及位置---显示地图上 给原型对象添加方法,产 ...
- 记一次使用正则表达式+foreach控制器调试
使用forEach控制器时,变量为上一个请求返回的参数(通过正则表达式提取),设置好控制器的起始值后发现每次都是只执行一个,然后开始怀疑人生,百度了各种材料,最后还是决心好好的观察自己每一步是不是错了 ...
- Euler Sums系列(五)
\[\Large\displaystyle \sum_{n=1}^{\infty} \frac{\widetilde{H_n}}{n^{3}}\] where \(\widetilde{H_n}\) ...
- 五种网络IO模型以及多路复用IO中select/epoll对比
下面都是以网络读数据为例 [2阶段网络IO] 第一阶段:等待数据 wait for data 第二阶段:从内核复制数据到用户 copy data from kernel to user 下面是5种网络 ...