交换机cpu负载90%以上(二)【新任帮主】

交换机cpu负载90%以上(二)
一.背景介绍:
来到这个公司2个多月,就又遇到了一起“交通事故”,交换机cpu90%以上,公司的人上公网,访问idc数
据总是出现丢包的情况,公司使用的都是cisco的设备 ,接入有2960,2950,3560交换机,core 是4506交换
机,防火墙是juniper, 出口路由器是routeros;

二.案例赏析

雪飘人间分享案例之cpu负载90%以上(二)

    如上是网络的部分拓扑图,由于是办公生产网络,并且有内部server数据,所以整个拓扑图无权限展现出
来,不过这将完全不影响我们展现问题所在;

    首先在接到同事反映网速慢时,我就采用分段隔离法,逐级测试外网地址 ,最终确定是我们自己内部到网
关就有问题;这个可不好排查了,因为不是所有人到网关都有问题,其实绝大多数到网关都没有问题
当时的判断是某个接入交换机到核心交换机线路有问题,要是这个问题的话,那就不好搞了 ,因为办公网是从
1996年就开始成立了 ,线路老化也是非常有可能的,要真的是线路的问题,那么换线是非常麻烦的事情
了,但是后来仔细观察发现,丢包同事的pc机器并不都在一台交换机上,而是分布在很多台上,这个就可以排
除是线路老化造成的了,因为线路老化不可能同一时间很多条线路都老化了;问题变得越来越棘手

    当时考虑最近有没有上什么新的业务导致办公网流量徒增造成的,但是事实是没有上新业务,和往常一样,
于是我就利用我们的监控Cacti查看这台核心交换机的流量图,发现交换机在和防火墙对接的口流量非常的大
而我们的防火墙又是现上的;看来就是防火墙和交换机之间的连线问题了,在这个之前我们也用wireshark抓
包看过内网流量,发现除了大量的budp,没有其他的异常流量

     我看了下防火墙到交换机的两条线路,防火墙本身是个1000兆的接口 ,但是交换机基本上都是百兆的接口
千兆接口少之又少,而且基本上都被占用,并且防火墙和交换机对接的有一个线是千兆,而另一根线是百兆
的,看来是流量阻塞造成的了

     过程是这样的,内网网关放在防火墙上,流量经交换机二层到防火墙,然后再由防火墙经由交换机到路由
器,由于进到防火墙是个千兆,所以很多流量都能过去,但是防火墙将流量转发的交换机上的时候,交换机却
用百兆网口去接收,导致交换机接口的利用率达到了100%,然后交换机采用cpu去计算,这样交换机的cpu自
然会升高

     后来我是在交换机上找了个千兆口接在防火墙,cpu下去了,丢包现象消失

       事情到此任然没有结束,let‘s  go !
      当我再次查看cpu的时候,发现cpu利用率还是很高:

雪飘人间分享案例之cpu负载90%以上(二)

       通过查看其进程发现是Cat4k Mgmt LoPri 非常的高,这里的HiPri代表是处理高优先级的进程,LoPri代
 表处理低优先级的进程,LoPri 值比较大原因是因为进程超过了HiPri给定的Target,然后交给了LoPri来处理
 最终才带来了LoPri值比较大的问题:

雪飘人间分享案例之cpu负载90%以上(二)

        我开始再次查看cpu的进程(show platform health)
    雪飘人间分享案例之cpu负载90%以上(二)
       这条命令是能够查看时哪个进程占用了大量cpu:
       intra#   sh  platform health
                                         %CPU   %CPU    RunTimeMax   Priority  Average %CPU  Total
                                          Target Actual Target Actual   Fg   Bg 5Sec Min Hour  CPU

        K2PortMan Review       2.00   2.81     15     11  100  500    2   2    2  8242:09
       Gigaport0 Review       0.40   0.00      4      0  100  500    0   0    0  0:00
       Gigaport1 Review       0.40   0.00      4      0  100  500    0   0    0  0:00
       Gigaport2 Review       0.40   0.00      4      0  100  500    0   0    0  0:00
       Gigaport3 Review       0.40   0.00      4      0  100  500    0   0    0  0:00
       K2FibPerVlanPuntMan    2.00   0.00     15      2  100  500    0   0    0  0:00
       K2FibFlowCache flow    2.00   0.02     10      8  100  500    0   0    0  195:34
       K2FibFlowCache flow    2.00  54.00     10      8  100  500   58  65   45  41846:36
       K2FibFlowCache adj r   2.00   0.09     10      4  100  500    0   0    0  280:52

       可以看到 其他的值Target的值是比Actual大的,但是K2FibFlowCache flow  是不正常的,查看
  官网对应的解释:
       雪飘人间分享案例之cpu负载90%以上(二)
        这个值之所以大是因为,PBR在作怪,我们核心交换机上确实配置了PBR做特别需求处理,当我把
   PBR给去掉了时候,再次查看K2FibFlowCache flow

雪飘人间分享案例之cpu负载90%以上(二)
发现这个值立刻就下去了,然后在看看CPU 雪飘人间分享案例之cpu负载90%以上(二)

三.总结结论
1.对于交换机的cpu升高有很多种因素造成,排查起来相对困难
2.排查cpu故障时,如果是突然的升高,那么也要从好几个方面排查,主要是看最近业务有没有变动,架构有
没有变动,配置有没有变动等,有可能是误操作导致,当然老的机器还有可能是硬件出现故障
3.一般来说流量徒增,对交换机cpu影响是比较大的,比如交换机接口转发流量,×××流量等等
4.官网也有很多对于cpu升高问题处理解决办法,在解决问题时还要结合其他有用的资源,比如本例中的流量
监控工具Cacti

原文地址:http://blog.51cto.com/2825930/2286871

时间: 2024-10-08 05:39:13

交换机cpu负载90%以上(二)【新任帮主】的相关文章

【原创】(二)Linux进程调度器-CPU负载

背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本:4.14 ARM64处理器,Contex-A53,双核 使用工具:Source Insight 3.5, Visio 1. 概述 CPU负载(cpu load)指的是某个时间点进程对系统产生的压力. 来张图来类比下(参考Understanding Linux CPU Load) CPU的运行能力,就

Linux系统排查——CPU负载篇

本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. 不可打扰:阻塞,正在等待I/O 1.使用uptime查看系统负载 # uptime 19:26:17 up 49 days, 7:34, 1 user, load average: 0.67, 0.51, 0.41 这里我们关注的是最后三列,即系统1分钟.5分钟.15分钟内的平均负载,判断一个系统负

Linux系统排查2——CPU负载篇

本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. 不可打扰:阻塞,正在等待I/O 例1. 使用uptime查看系统负载 # uptime 19:26:17 up 49 days, 7:34, 1 user, load average: 0.67, 0.51, 0.41 这里我们关注的是最后三列,即系统1分钟.5分钟.15分钟内的平均负载,判断一个系

Linux CPU负载

昨天查看Nagios警报信息,发现其中一台服务器CPU负载过重,机器为CentOS系统.信息如下: 2011-2-15 (星期二) 17:50 WARNING - load average: 9.73, 10.67, 10.49 还有前两个小时发出的警报信息: 2011-2-15 (星期二) 16:50 WARNING - load average: 10.52, 10.10, 10.06 2011-2-15 (星期二) 15:40 WARNING - load average: 8.27, 9

cpu负载和利用率

理解Linux系统负荷 linux里的CPU负载

python-检测cpu负载

近期研究nagios,特意写了检测cpu负载的python脚本(有借鉴网上资料),顺道练练python脚本,以下采用2种方法获取cpu负载. 1.读取cpu负载文件: #!/usr/bin/env python#-*- coding:utf-8 -*-'''cpu负载检测 for nagios'''import sysdef check_load():    loadf=open('/proc/loadavg','r')    allavg=loadf.readline()    load5av

CentOS下通过命令行制造CPU负载或压力

无意间在51首页上看到一篇关于"通过命令行制造CPU负载或压力"的文章,感觉不错,先记录下来,为将来的使用做好笔记记录!     很简单,就一个命令:    # cat /dev/urandom | md5sum

通过命令行对CPU负载做压力测试

无意间在51首页上看到一篇关于"通过命令行制造CPU负载或压力"的文章,感觉不错,先记录下来,为将来的使用做好笔记记录! 很简单,就一个命令: # cat /dev/urandom | md5sum 然后通过top观察,cpu的值果然很高,说明测试成功! 有图有真相^ _ ^ 通过命令行对CPU负载做压力测试

[MySQL优化案例]系列 — 典型性索引引发CPU负载飙升问题

收到一个mysql服务器负载告警,上去一看,load average都飙到280多了,用top一看,CPU跑到了336%,不过IO和内存的负载并不高,根据经验,应该又是一起索引引起的惨案了. 看下processlist以及slow query情况,发现有一个SQL经常出现,执行计划中的扫描记录数看着还可以,单次执行耗时为0.07s,还不算太大.乍一看,可能不是它引发的,但出现频率实在太高,而且执行计划看起来也不够完美: mysql> explain SELECT count(1) FROM a