我们已经准备好了,你呢?

2022我们与您携手共赢,为您的企业网络安全保驾护航!

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资源

故障诊断流程


详细处理流程如图13-1所示。

图13-1 CPU占用率高故障诊断流程图
download.png

故障处理步骤

请保存以下步骤的执行结果,以便在故障无法解决时快速收集和反馈信息。

以下的步骤之间并没有严格的顺序关系,实际操作中并不一定要遵守文中所给的顺序。

设备型号不同,以下步骤中命令的显示信息也会有差异,请以设备实际显示信息为准。文中示例旨在告诉读者如何查看相关信息。

操作步骤

  1. 检查占用CPU高的任务名称


    执行命令display cpu-usage,查看各任务的CPU占用率。

    记录CPU占用率超过70%的任务名称。

    这个取值并非绝对数值,有可能某些任务执行时就需要占用70%的CPU而对业务不会造成影响,也有可能某些任务占用CPU 30%时就会对业务造成影响。应该根据实际情况判断。


  2. 检查是否上送CPU的报文太多


    执行命令display cpu-defend statistics,查看上送CPU报文的统计信息,关注丢弃计数。

    <Huawei> display cpu-defend statistics
  3. -----------------------------------------------------------------------
  4. Packet Type               Pass Packets        Drop Packets
  5. -----------------------------------------------------------------------
  6. 8021X                                0                   0
  7. arp-miss                             1                   0
  8. arp-reply                            5                   0
  9. arp-request                    1450113               25597
  10. bfd                                  0                   0
  11. bgp                                  0                   0
  12. dhcp-client                     114693              136586
  13. dhcp-server                          0                   0
  14. dns                                  0                   0
  15. fib-hit                              0                   0
  16. ftp                                717                   0
  17. fw-dns                               0                   0
  18. fw-ftp                               0                   0
  19. fw-http                              0                   0
  20. fw-rtsp                              0                   0
  21. fw-sip                               0                   0
  22. gvrp                                 0                   0
  23. http                               798                   0
  24. hw-tacacs                            0                   0
  25. icmp                                10                   0
  26. igmp                                 0                   0
  27. ipsec                                0                   0
  28. isis                                 0                   0
  29. lacp                                 0                   0
  30. lldp                             33959                   0
  31. ntp                                  0                   0
  32. ospf                              1569                   0
  33. pim                                  0                   0
  34. pppoe                                0                   0
  35. radius                               0                   0
  36. rip                                  0                   0
  37. snmp                                 0                   0
  38. ssh                                  0                   0
  39. stp                                  0                   0
  40. tcp                               7671                   0
  41. telnet                           71149                   0
  42. ttl-expired                        656                   0
  43. udp-helper                           0                   0
  44. unknown-multicast                    6                   0
  45. unknown-packet                   94189                   0
  46. vrrp                                 0                   0
  47. -----------------------------------------------------------------------


    • 如果某种类型报文“Drop”计数较大,且对应上一步中占用的CPU使用率较高,可以判断为发生了报文攻击。请执行步骤6。

    • 如果没有发现有流量过大的报文,请执行步骤3。

  48. 检查是否TC报文过多


    支持STP的设备上,STP使能情况下,设备在接收到TC-BPDU报文时,会删除MAC地址表项和ARP表项。如果有人伪造TC-BPDU报文恶意攻击,设备短时间内会收到很多TC-BPDU报文,频繁的删除操作会导致CPU占用率比较高。

    执行命令display stp,查看接口下收到的TC报文和TCN报文计数。

    <Huawei> display stp interface Eth2/0/1
  49. ----[CIST][Port2(Ethernet2/0/1)][FORWARDING]----
  50. Port Protocol       :Enabled
  51. Port Role           :Designated Port
  52. Port Priority       :128
  53. Port Cost(Dot1T )   :Config=auto / Active=199999
  54. Designated Bridge/Port   :4096.00e0-fc01-0005 / 128.2
  55. Port Edged          :Config=default / Active=disabled
  56. Point-to-point      :Config=auto / Active=true
  57. Transit Limit       :147 packets/hello-time
  58. Protection Type     :None
  59. Port STP Mode       :MSTP
  60. Port Protocol Type  :Config=auto / Active=dot1s
  61. PortTimes           :Hello 2s MaxAge 20s FwDly 15s RemHop 20
  62. TC or TCN send      :1
  63. TC or TCN received  :0
  64. BPDU Sent           :124008
  65. TCN: 0, Config: 0, RST: 0, MST: 124008
  66. BPDU Received       :0
  67. TCN: 0, Config: 0, RST: 0, MST: 0


    • 如果该值很大,系统视图下执行命令stp tc-protection配置对TC类型BPDU报文的抑制。配置此命令后,默认每个Hello周期处理3个TC报文。可以根据实际情况通过stp tc-protection threshold命令指定处理的报文数量门限值,可以通过stp timer hello命令修改Hello周期的时长。

      [Huawei] stp tc-protection
    • [Huawei] stp tc-protection threshold 5
    • [Huawei] stp timer hello 200
    • 如果TC报文数量不多,请执行步骤4。

  68. 检查网络是否有环路


    当设备的某个VLAN中包含较多接口时,如果有两个接口形成环路,则报文会在多个接口之间一直转发,会导致CPU占用率上升。

    执行命令display current-configuration,查看是否使能了MAC地址漂移告警功能。

    #  loop-detect eth-loop alarm-only #


    • 如果不需要环网,根据组网图,将其中一个端口shutdown处理。

    • 如果确实需要环网,关闭Loop Detection功能,并启动STP等破环协议。

    • 如果没有,执行命令loop-detect eth-loop alarm-only配置当发生MAC地址漂移时产生告警。此时如果网络中有环路,当设备两个接口学习到同一个MAC表项时,会产生告警。如:

      Feb 22 2011 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)

      根据告警提示信息,查看相应的接口连接以及组网需求。

    • 如果设备已经配置了loop-detect eth-loop alarm-only,但是没有看到告警,请执行步骤5。

    • 检查设备是否产生海量日志


      某些异常情况下如受到攻击、运行中发生了错误、端口频繁Up/Down等,设备会不停打印诊断信息或日志信息。此时对存储器要进行频繁的读写操作,会造成CPU占用率升高。

      执行命令display logbuffer,查看是否有大量的异常日志。如某一条信息不断地大量重复出现。执行步骤6。


    • 请收集如下信息,并联系技术支持人员


      • 上述步骤的执行结果。

      • 设备的配置文件、日志信息、告警信息。


    我们凭借多年的智能化设计及施工经验,坚持以“帮助中小企业实现现代化网络”为宗旨,累计为4000多家客户提供品质智能化服务,得到了客户的一致好评。如果您有综合布线、计算机网络、无线覆盖、门禁考勤、机房建设、防火墙、路由器及交换机调试等方面的需求...
    请立即点击咨询我们或拨打咨询热线: 17804441181,我们会详细为你一一解答你心中的疑难。项目经理在线

    我们已经准备好了,你呢?

    2022我们与您携手共赢,为您的企业网络安全保驾护航!

    在线客服
    联系方式

    热线电话

    17804441181

    上班时间

    周一到周五

    公司电话

    +86-512-65829193

    二维码
    微信
    线