cpu占用高 mongo_华为交换机CPU占用率高原因判断和解决方法(二)

本文分析了华为交换机CPU占用率高的正常场景,如生成树、路由表更新、命令执行和特定事件,以及可能的影响,如STP拓扑改变和路由震荡。同时,提供了排查步骤,包括获取设备信息、CPU占用率统计和告警日志,帮助诊断和解决问题。
摘要由CSDN通过智能技术生成

9b70502ea156998afb0282691c37f05c.png

3、CPU占用率高属于正常现象的场景

在一些网络应用中,CPU占用率较高是正常的。通常情况下,网络规模越大,处理网络流量需要的CPU资源将越多。对于运行堆叠的交换机系统,当管理的成员交换机数量增多时,CPU用于维护和管理堆叠系统状态所需要的资源也会相应增加。设备长时间运行时CPU占用率不超过80%,短时间内CPU占用率不超过95%,可认为设备状态是正常的。

华为交换机在如下一些场景可能导致CPU占用率高,但是属于正常现象,而不是故障场景:

1、生成树

对于MSTP,CPU占用率同实例数和活跃端口数成正比。对于VBST,由于每个VLAN独立运行一个实例,因此在相同VLAN和端口数目下,VBST比MSTP占用更多的CPU资源。

2、更新路由表

当一台三层交换机接收到路由更新消息时,设备需占用CPU资源将路由信息更新到转发面。对于堆叠系统,路由信息还需要同步到其他成员交换机。在路由表更新过程中影响CPU占用率大小的因素有:路由表项的规模;更新的频率;接收更新的路由协议进程数;堆叠系统成员交换机数量。

3、执行命令

部分命令因执行时间长会导致CPU占用率暂时升高,主要包括:用户视图下执行copy flash:/命令;一些输出信息量大的debug命令,尤其是通过串口输出debug信息。

4、导致CPU占用率高的其他事件

端口使能了Sticky MAC功能后,快速学习MAC;将大量端口同时加入大量VLAN(如通过端口组操作,将大批端口加入大量VLAN、修改大批端口的链路类型等);频繁或大量的IGMP请求;频繁的网管操作;大量并发的DHCP请求(如交换机作为DHCP服务器时,同时恢复与大量用户的连接);ARP广播风暴;以太网广播风暴;软转发大量并发协议报文(如短时间内L2PT透传大量BPDU报文,DHCP Relay/Snooping软转发DHCP报文等);大量不能硬件转发的数据报文上送CPU(如ARP-Miss);端口频繁up/down。

4、CPU占用率高对系统的影响

CPU占用率过高会影响系统处理能力,导致网络业务表现不如预期,可能导致出现的网络故障现象有:

1、STP拓扑改变甚至出现网络环路

交换机通过CPU周期性的接收BPDU报文维持其Root/Alternate端口角色,如果因上游设备CPU繁忙导致BPDU报文不能及时发出或本机CPU繁忙不能及时处理收到的BPDU报文,交换机会认为到根桥的原路径故障而重新选择Root端口,引起网络重新收敛;如果交换机原来同时存在Alternate端口,则将Alternate端口作为新的Root端口,这时就可能导致网络出现环路。

2、路由拓扑改变

动态路由协议的保活由CPU完成,如果因CPU繁忙不能及时接收和发送hello报文,就会导致路由震荡,如OSPF震荡、BGP震荡、VRRP震荡。

3、可靠性检测协议震荡

802.3ah、802.1ag、DLDP、BFD、MPLS OAM等检测协议均由CPU完成定时保活(S5700HI通过硬件OAM引擎实现802.1ag、BFD、MPLS OAM的超时探测,其OAM保活不受CPU负荷状态影响),如果因为CPU繁忙不能及时接收和发送协议报文,将会导致协议震荡,进而影响相关业务流量转发。

4、LACP类型的Eth-Trunk链路震荡

LACP的保活由CPU完成,如果因CPU繁忙不能及时接收和发送

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,您的问题是关于如何基于Python、Scrapy、Redis和Rule组件实现分布式爬虫爬取京东华为笔记本的。首先,您需要安装Scrapy和Redis,并在Scrapy的配置文件中添加Redis相关的配置: ```python # 在settings.py中添加以下配置 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" SCHEDULER = "scrapy_redis.scheduler.Scheduler" SCHEDULER_PERSIST = True REDIS_URL = 'redis://localhost:6379' ``` 然后,您需要编写Spider和Item Pipeline,其中Spider负责解析并抓取网页,Item Pipeline负责处理抓取到的数据。下面是一个示例的Spider代码: ```python from scrapy_redis.spiders import RedisSpider from scrapy.selector import Selector from ..items import ProductItem class JdSpider(RedisSpider): name = 'jd' redis_key = 'jd:start_urls' def parse(self, response): sel = Selector(response) products = sel.xpath('//div[@class="gl-i-wrap"]') for product in products: item = ProductItem() item['name'] = product.xpath('div[@class="p-name"]/a/em/text()').extract_first() item['price'] = product.xpath('div[@class="p-price"]/strong/i/text()').extract_first() item['url'] = product.xpath('div[@class="p-name"]/a/@href').extract_first() yield item ``` 在Item Pipeline中,您可以对抓取到的数据进行清洗和存储,下面是一个示例的Item Pipeline代码: ```python import pymongo class JdPipeline(object): def __init__(self, mongo_uri, mongo_db): self.mongo_uri = mongo_uri self.mongo_db = mongo_db @classmethod def from_crawler(cls, crawler): return cls( mongo_uri=crawler.settings.get('MONGO_URI'), mongo_db=crawler.settings.get('MONGO_DATABASE', 'items') ) def open_spider(self, spider): self.client = pymongo.MongoClient(self.mongo_uri) self.db = self.client[self.mongo_db] def close_spider(self, spider): self.client.close() def process_item(self, item, spider): self.db['products'].insert(dict(item)) return item ``` 最后,您需要创建一个Redis队列,并向队列中添加起始URL,如下所示: ```python import redis r = redis.Redis(host='localhost', port=6379) r.lpush('jd:start_urls', 'https://search.jd.com/Search?keyword=%E5%8D%8E%E4%B8%BA%E7%AC%94%E8%AE%B0%E6%9C%AC&enc=utf-8') ``` 最终,您就可以运行分布式爬虫并抓取京东华为笔记本的数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值