一个小调整,竟然让交换机、路由器的CPU占用率降低了50%
号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
下午好,我的网工朋友。
在信息时代下,不仅仅在网络工程领域,高CPU占用率都是一个非常常见的问题,尤其是在交换机、路由器等设备上。
这种情况不仅会影响网络性能,还可能导致服务中断和数据丢失。
今天就和你来探索一下当遇见交换机、路由器等设备CPU占用率过高的故障时应该怎样解决。
今日文章阅读福利:《 cisco路由器配置(实战篇) 》
私信发送暗号“思科”,即可获取思科官方教材资源,以及顺手给你打包了一些别的好东西,进一步提升你的技术视野。
01 CPU占用率是啥意思?
CPU占用率,就是一个时间段内,CPU执行代码的时间与时间段总长度的比率。CPU占用率常常是衡量设备性能的重要指标之一。
CPU占用率高,是设备本身的一种现象,直观表现为display cpu-usage命令查询结果中整机CPU占用率“CPU usage”偏高,如超过70%。在网络运行中CPU高常常会导致其他业务异常,如BGP震荡、VRRP频繁切换、甚至设备无法登录。以下讨论的原因及步骤基于CPU占用率高这个现象。
通常,整机CPU占用率过高,是由于某些任务的CPU占用率居高不下导致的。具体导致某任务CPU占用率高的可能原因:
- 上送CPU报文过多,如环路或DoS报文攻击
- STP网络频繁震荡,收到大量TC报文,造成设备频繁删除MAC表和ARP表项
- 设备产生海量日志,占用大量CPU资源
02 故障诊断流程
详细处理流程如下图所示。
03 故障处理步骤
01 检查占用CPU高的任务名称
执行命令display cpu-usage,查看各任务的CPU占用率。
记录CPU占用率超过70%的任务名称。
这个取值并非绝对数值,有可能某些任务执行时就需要占用70%的CPU而对业务不会造成影响,也有可能某些任务占用CPU 30%时就会对业务造成影响。应该根据实际情况判断。
02 检查是否上送CPU的报文太多
执行命令display cpu-defend statistics,查看上送CPU报文的统计信息,关注丢弃计数。
<Huawei> display cpu-defend statistics all
-----------------------------------------------------------------------
Packet Type Pass Packets Drop Packets
-----------------------------------------------------------------------
8021X 0 0
arp-miss 1 0
arp-reply 5 0
arp-request 1450113 25597
bfd 0 0
bgp 0 0
dhcp-client 114693 136586
dhcp-server 0 0
dns 0 0
fib-hit 0 0
ftp 717 0
fw-dns 0 0
fw-ftp 0 0
fw-http 0 0
fw-rtsp 0 0
fw-sip 0 0
gvrp 0 0
http 798 0
hw-tacacs 0 0
icmp 10 0
igmp 0 0
ipsec 0 0
isis 0 0
lacp 0 0
lldp 33959 0
ntp 0 0
ospf 1569 0
pim 0 0
pppoe 0 0
radius 0 0
rip 0 0
snmp 0 0
ssh 0 0
stp 0 0
tcp 7671 0
telnet 71149 0
ttl-expired 656 0
udp-helper 0 0
unknown-multicast 6 0
unknown-packet 94189 0
vrrp 0 0
-----------------------------------------------------------------------
- 如果某种类型报文“Drop”计数较大,且对应上一步中占用的CPU使用率较高,可以判断为发生了报文攻击。
- 如果没有发现有流量过大的报文,请执行步骤3。
03 检查是否TC报文过多
支持STP的设备上,STP使能情况下,设备在接收到TC-BPDU报文时,会删除MAC地址表项和ARP表项。如果有人伪造TC-BPDU报文恶意攻击,设备短时间内会收到很多TC-BPDU报文,频繁的删除操作会导致CPU占用率比较高。
执行命令display stp,查看接口下收到的TC报文和TCN报文计数。
<Huawei> display stp interface Eth2/0/1
----[CIST][Port2(Ethernet2/0/1)][FORWARDING]----
Port Protocol :Enabled
Port Role :Designated Port
Port Priority :128
Port Cost(Dot1T ) :Config=auto / Active=199999
Designated Bridge/Port :4096.00e0-fc01-0005 / 128.2
Port Edged :Config=default / Active=disabled
Point-to-point :Config=auto / Active=true
Transit Limit :147 packets/hello-time
Protection Type :None
Port STP Mode :MSTP
Port Protocol Type :Config=auto / Active=dot1s
PortTimes :Hello 2s MaxAge 20s FwDly 15s RemHop 20
TC or TCN send :1
TC or TCN received :0
BPDU Sent :124008 TCN: 0, Config: 0, RST: 0, MST: 124008
BPDU Received :0 TCN: 0, Config: 0, RST: 0, MST: 0
- 如果该值很大,系统视图下执行命令stp tc-protection配置对TC类型BPDU报文的抑制。配置此命令后,默认每个Hello周期处理3个TC报文。可以根据实际情况通过stp tc-protection threshold命令指定处理的报文数量门限值,可以通过stp timer hello命令修改Hello周期的时长。
- 如果TC报文数量不多,请执行步骤4。
04 检查网络是否有环路
当设备的某个VLAN中包含较多接口时,如果有两个接口形成环路,则报文会在多个接口之间一直转发,会导致CPU占用率上升。
执行命令display current-configuration,查看是否使能了MAC地址漂移告警功能。
#
loop-detect eth-loop alarm-only
#
- 如果没有,执行命令loop-detect eth-loop alarm-only配置当发生MAC地址漂移时产生告警。此时如果网络中有环路,当设备两个接口学习到同一个MAC表项时,会产生告警。如:
Feb 22 2022 18:42:50 Huawei L2IFPPI/4/MAC_FLAPPING_ALARM:OID 1.3.6.1.4.1.2011.5.25.42.2.1.7.12The mac-address has flap value . (L2IfPort=0,entPhysicalIndex=0, BaseTrapSeverity=4, BaseTrapProbableCause=549, BaseTrapEventType=1, MacAdd=0000-c0a8-0101,vlanid=100, FormerIfDescName=Ethernet1/0/0,CurrentIfDescName=Ethernet1/0/1,DeviceName=HUAWEI)
- 根据告警提示信息,查看相应的接口连接以及组网需求。
- 如果不需要环网,根据组网图,将其中一个端口shutdown处理。
- 如果确实需要环网,关闭Loop Detection功能,并启动STP等破环协议。
- 如果设备已经配置了loop-detect eth-loop alarm-only,但是没有看到告警,请执行步骤5。
05 检查设备是否产生海量日志
某些异常情况下如受到攻击、运行中发生了错误、端口频繁Up/Down等,设备会不停打印诊断信息或日志信息。此时对存储器要进行频繁的读写操作,会造成CPU占用率升高。
执行命令display logbuffer,查看是否有大量的异常日志。
整理:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部
相关文章:

一个小调整,竟然让交换机、路由器的CPU占用率降低了50%
号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 下午好,我的网工朋友。 在信息时代下,不仅仅在网络工程领域,高CPU占用率都是一个非常常见的问题,…...

echarts树图 改文本显示的地方的样式
树图改文本显示的时候的样式 虽然有点越改越丑 其中有一些失败的尝试 forammter 无法识别html元素 所以对于tooptips有用的html元素定义获取返回在这里写的话是不生效的 rich配置项里面的backgroundColor官方说支持 html元素和canvas元素 已经图片url 没有详细试验 官网地址 h…...

MYDB运行环境的搭建
前言 再将该项目跑起来之前,我想你的环境应该是准备的差不多啦!只需要稍稍的配置一下即可。 我在本地已经跑通了,说是兼容JDK8,但我本地刚好有11就用了11啦,跑起来的方法在仓库的 readme 里写的很清楚。 在运行mvn c…...
Flink Stream API实践
目录 Flink程序的基本构成 获得执行环境(environment) 加载/初始化数据(source) 基于文件 基于socket 基于集合 自定义 转换操作(transformation) 基本转换 物理分区 任务链和资源组 名称和描述…...

AI图像生成-原理
一、图像生成流程总结 【AI绘画】深入理解Stable Diffusion!站内首个深入教程,30分钟从原理到模型训练 买不到的课程_哔哩哔哩_bilibili 二、如果只是用comfy UI生成图片 1、找到下面几个文件,把对应模型移动到对应文件夹即可使用 2、选择对…...
【JavaScript】尺寸和位置
DOM对象相关的尺寸和位置属性 用于获取和修改元素在页面中的尺寸和位置。 只读属性: clientWidth和clientHeight:获取元素可视区域的宽度和高度(padding content),不包括边框和滚动条。 offsetWidth和offsetHeight…...

Express框架下搭建GraphQL API
需要先下载apollo-server-express,apollo-server-express是Express框架下,用于构建GraphQL服务的中间件,属于Apollo Server的一部分: npm install apollo-server-express 随后在index.js添加 apollo-server-express包࿱…...

发布订阅模式
一、常见的发布订阅模式 1、Dom的事件 Event addEventListener dispatchEvent //订阅中心 const event new Event(zyk); //订阅 document.addEventListener(zyk, (value)>{console.log(我收到了:, value) }); //发布 document.dispatchEvent(e, 1); docume…...

【Java 演示灵活导出数据】
演示灵活导出数据 🎉🎉🎉🎉🎉🎉【小吴小吴bug全无开通公众号】关注公众号获取第一时间博客动态 背景今天临时起兴打开稀土掘金导航栏看到页面推广gitee项目恰巧最近也在学习python了解到python爬虫很厉害&…...

一对一WebRTC视频通话系列(六)——部署到公网
本系列博客主要记录一对一WebRTC视频通话实现过程中的一些重点,代码全部进行了注释,便于理解WebRTC整体实现。 本专栏知识点是通过<零声教育>的音视频流媒体高级开发课程进行系统学习,梳理总结后写下文章,对音视频相关内容感…...

【数据结构】线性表----链表详解
数据结构—-链表详解 目录 文章目录 链表的定义链表的构成链表的分类双向和单向带头和不带头循环和不循环 链表的命名基本操作的实现初始化打印取值查找插入指定位置插入删除删除销毁 部分其他链表的代码实现循环链表双向链表 优点/缺点(对比顺序表)优点…...
【小程序】小程序如何适配手机屏幕
小程序如何适配手机屏幕 1. 使用rpx单位2. 百分比布局3. 弹性盒子(Flexbox)和网格布局4. 媒体查询5. 响应式布局6. 测试和调试 1. 使用rpx单位 rpx(responsive pixel)是小程序中的一种长度单位,可以根据屏幕宽度进行自…...

第15节 编写shellcode加载器
我最近在做一个关于shellcode入门和开发的专题课👩🏻💻,主要面向对网络安全技术感兴趣的小伙伴。这是视频版内容对应的文字版材料,内容里面的每一个环境我都亲自测试实操过的记录,有需要的小伙伴可以参考…...
JAVA学习-练习试用Java实现爬楼梯
问题: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 示例 1: 输入: 2 输出: 2 解释: 有两种方法可以爬到楼…...

[SWPUCTF 2021 新生赛]PseudoProtocols、[SWPUCTF 2022 新生赛]ez_ez_php
[SWPUCTF 2021 新生赛]PseudoProtocols 打开环境,提示hint.php就在这里,且含有参数wllm 尝试利用PHP伪协议读取该文件 ?wllmphp://filter/convert.base64-encode/resourcehint.php//文件路径php://filter 读取源代码并进行base64编码输出。 有一些敏…...

Hive-拉链表的设计与实现
Hive-拉链表的设计与实现 在Hive中,拉链表专门用于解决在数据仓库中数据发生变化如何实现数据存储的问题。 1.数据同步问题 Hive在实际工作中主要用于构建离线数据仓库,定期的从各种数据源中同步采集数据到Hive中,经过分层转换提供数据应用…...

AI应用案例:会议纪要自动生成
以腾讯会议转录生成的会议记录为研究对象,借助大模型强大的语义理解和文本生成等能力,利用指令和文本向量搜索实现摘要总结、要点提取、行动项目提取、会议纪要生成等过程,完成会议纪要的自动总结和生成,降低人工记录和整理时间成…...

基于光纤技术的新能源汽车电池安全监测--FOM²系统
为什么要进行动力电池包的温度监测? 新能源电动汽车的动力电池包的工作温度,不仅会影响电池包性能,而且直接关系到车辆安全。时有发生的新能源汽车电池包起火事件,对电池包、冷却系统以及电池管理系统(BMS)…...

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (二)
基于 LlaMA 3 LangGraph 在windows本地部署大模型 (二) #Options local_llm llama3 llm ChatOllama(modellocal_llm, format"json", temperature0) #embeddings #embeddings OllamaEmbeddings(model"nomic-embed-text") embed…...

Spring MVC(三) 参数传递
1 Controller到View的参数传递 在Spring MVC中,把值从Controller传递到View共有5中操作方法,分别是。 使用HttpServletRequest或HttpSession。使用ModelAndView。使用Map集合使用Model使用ModelMap 使用HttpServletRequest或HttpSession传值 使用HttpSe…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
手动给中文分词和 直接用神经网络RNN做有什么区别
手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动)…...

OPENCV图形计算面积、弧长API讲解(1)
一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积,这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能,常用的API…...
使用python进行图像处理—图像滤波(5)
图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值,以达到平滑(去噪)、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算,…...

深入理解 C++ 左值右值、std::move 与函数重载中的参数传递
在 C 编程中,左值和右值的概念以及std::move的使用,常常让开发者感到困惑。特别是在函数重载场景下,如何合理利用这些特性来优化代码性能、确保语义正确,更是一个值得深入探讨的话题。 在开始之前,先提出几个问题&…...