ifconfig 看到Rx error overrun 如何解决

2023-05-16



一台机器经常收到丢包的报警,先看看最底层的有没有问题:
# ethtool  em2 | egrep 'Speed|Duplex'
        Speed: 1000Mb/s
        Duplex: Full

# ethtool  -S em2 | grep crc
     rx_crc_errors: 0

Speed, Duplex, CRC 之类的都没问题,基本可以排除物理层面的干扰。
通过 ifconfig 可以看到 overruns 字段在不停的增大:
# for i in `seq 1 10`; do ifconfig em2 | grep RX | grep overruns; sleep 1; done

dropped 出现问题的倒是遇到过几次,overruns 的倒是第一次遇到,再看看下面这个:
# ethtool  -S em2 | grep drop
     dropped_smbus: 0
     tx_dropped: 0
     rx_queue_0_drops: 26649441
     rx_queue_1_drops: 26096911
     rx_queue_2_drops: 22712954
     rx_queue_3_drops: 16581572
     rx_queue_4_drops: 27349880
     rx_queue_5_drops: 6178622
     rx_queue_6_drops: 19882243
     rx_queue_7_drops: 18802558

发现数值也在不停的增加。G 了一下,发现这些 errors, dropped, overruns 表示的含义还不大一样。根据这篇文档的解释:
# ifconfig em2
em2       Link encap:Ethernet  HWaddr AC:85:3D:A9:03:0D  
          inet addr:211.211.211.211  Bcast:211.211.211.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:17141208886 errors:0 dropped:0 overruns:164254181 frame:0
          TX packets:14685534428 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2619578349554 (2.3 TiB)  TX bytes:1479317006067 (1.3 TiB)
          Memory:94b00000-94b20000

RX errors: 表示总的收包的错误数量,这包括 too-long-frames 错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。
RX dropped: 表示数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。
RX overruns: 表示了 fifo 的 overruns,这是由于 Ring Buffer(aka Driver Queue) 传输的 IO 大于 kernel 能够处理的 IO 导致的,而 Ring Buffer 则是指在发起 IRQ 请求之前的那块 buffer。很明显,overruns 的增大意味着数据包没到 Ring Buffer 就被网卡物理层给丢弃了,而 CPU 无法即使的处理中断是造成 Ring Buffer 满的原因之一,上面那台有问题的机器就是因为 interruprs 分布的不均匀(都压在 core0),没有做 affinity 而造成的丢包。
RX frame: 表示 misaligned 的 frames。

对于 TX 的来说,出现上述 counter 增大的原因主要包括 aborted transmission, errors due to carrirer, fifo error, heartbeat erros 以及 windown error,而 collisions 则表示由于 CSMA/CD 造成的传输中断。

在梳理这些 error/drop/discard 的时候,由于涉及到不同的 NIC 型号,ethtool/netstat 或者是直接从 proc 里面获取到的数据所代表的意思还不完全一样,比如上面通过 ethtool 得到的「丢包」是通过 rx_queue_NUM_drops 这个字段表示的,而通过 netstat 看到的却是 RX-OVR 表示的,一个是 overruns 一个是 dropped,字面意思完全不同:
# netstat -i | column  -t
Kernel  Interface  table
Iface   MTU        Met    RX-OK        RX-ERR  RX-DRP  RX-OVR     TX-OK        TX-ERR  TX-DRP  TX-OVR  Flg
em2     1500       0      17159519100  0       0       164254181  14701510290  0       0       0       BMRU

不管是使用何种工具,最终的数据无外乎是从下面这两个文件获取到的:

  1. /sys/class/net/em2/statistics/
  2. /proc/net/dev

# cat /proc/net/dev | column  -t
Inter-|            Receive      |        Transmit
face               |bytes       packets  errs      drop       fifo  frame  compressed  multicast|bytes  packets      errs  drop  fifo  colls  carrier  compressed
em2:2621515020998  17153788154  0        0         164254181  0     0      0           1480433225509    14696703883  0     0     0     0      0        0

对于上面出现的若干种问题,一方面是做好监控,另外一方面是出现问题的时候及时的想到各种的可能,无外乎那么几种。Google 过程中发现了 stackexchange 上还没人回答的问题,结合上面的,我顺便回答了一下,基本,遵循里面的四点,95% 以上的场景应该能轻松应对。

ref:
http://serverfault.com/questions/561107/how-to-find-out-the-reasons-why-the-network-interface-is-dropping-packets
http://serverfault.com/questions/448768/cat-proc-net-dev-and-ip-s-link-show-different-statistics-which-one-is-lyi

http://www.linuxjournal.com/content/queueing-linux-network-stack

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ifconfig 看到Rx error overrun 如何解决 的相关文章

  • vs2017常用快捷键

    VS2017常用快快捷键 目录 43 VS常用快捷键搜集窗口操作快捷键项目快捷键调试快捷键编辑快捷键代码快捷键单元测试 xfeff xfeff 项目相关的快捷键 Ctrl 43 Shift 43 B 61 生成项目 Ctrl 43 Alt
  • phpStudy基本用法

    闲扯正文 更改目录更改首页更改端口号DNS解析 参考资料 闲扯 第一次接触php xff0c 要先安装环境 xff0c 包括Apache mySQL和PHP xff1b 安装就安装呗 xff0c 我先跑到Apache官网上面想下一个Apac
  • 小白学爬虫(三)-- requests库之Cookie

    前言使用超时参数在requests添加Cookie参数 啥是cookie三种Cookie请求方式 第一种 xff1a cookie放在headers中第二种 xff1a cookie字典传给cookies参数第三种 先发送post请求 xf
  • 操作系统(五) -- CPU的调度策略

    文章目录 常见的调度策略以及考虑的内容 CPU调度的直观想法 xff1a FIFOPriority xff08 优先级 xff09 如何评价一个调度算法的好坏 xff1f 上述三个指标之间是不是存在冲突呢 xff1f 前台任务和后台任务的关
  • vscode 前端最佳插件配置

    vscode最佳配置 最近更新时间 xff1a 2023 02 18 xff08 Vscode v1 17 xff09 vscode 配置文件内容在最后 xff0c 可直接copy使用 配置详解 editor是针对 vscode 的风格设置
  • Java序列化与反序列化及serialVersionUID

    Java序列化与反序列化是什么 xff1f 为什么需要序列化与反序列化 xff1f 如何实现Java序列化与反序列化 xff1f 本文围绕这些问题进行了探讨 1 Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程
  • STM32 CAN总线说明

    简介 xff1a CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986年率先提出 此后 xff0c CAN通过I
  • 深度强化学习(DRL)一:入门篇

    目录 前言一 强化学习 xff08 RL xff09 的基本概念二 主要强化学习算法2 1 Qlearning2 2 Deep Qlearning2 3 Double DQN2 4 Sarsa2 5 Sarsa lambda2 6 A3C
  • 深度强化学习(DRL)四:DQN的实战(DQN, Double DQN, Dueling DQN)

    目录 一 环境二 DQN三 Double DQN四 Dueling DQN D3QN 五 小结 全部代码 https github com ColinFred Reinforce Learning Pytorch tree main RL
  • Android APK实现WIFI协议包抓取(上)-实现思路

    一次偶然的机会听到一个需求 xff0c 甲方希望能在手机上实现一个APK xff0c 这个APK能够记录附近WIFI的站点信息 xff0c 然后由强到弱抓取WIFI协议包 xff0c 转送到云端进行WIFI破解 大致调研了几天 xff0c
  • Yolov5 口罩识别

    自定义口罩数据集进行目标检测 目录 自定义口罩数据集进行目标检测Yolov5 代码地址数据集一 手动收集标记数据集二 使用公开数据集 改动源码训练结果迁移学习制作自定义数据集的注意事项 Yolov5 代码地址 https github co
  • Yolov5 网络结构

    yolov5 的网络结构 yolov5 的网络结构的配置文件在models文件夹下 xff0c 有yolov5n yaml yolov5s yaml yolov5m yaml等等 几个网络结构其实都一样 xff0c 通过depth mult
  • Yolov5 v6.1网络结构

    Yolov5 已经更新到v6 1版本了 xff0c 与之前的版本有了不少区别 xff0c 网络结构有了进一步优化 来整理一下 本文主要参考 https blog csdn net qq 37541097 article details 12
  • OpenCV Python 学习笔记(三) 仿射变换

    什么是仿射变换 xff1f 仿射变换就是图像的线性变换加上平移 xff0c 用一幅图表示 xff0c 就是 由 image1 到 image2 的转换经过了三个操作 旋转 线性变换 缩放操作 线性变换 平移 向量加 如果没有了第3个平移的操
  • AlphaGo Zero详解

    AlphaGo Zero 思考再三 xff0c 决定研究一下 AlphaGo Zero xff0c 并把 AlphaGo Zero 的思想运用到五子棋 中 xff0c 毕设就决定做这个 后文 xff1a 蒙特卡洛树搜索 xff08 MCTS
  • 蒙特卡洛树搜索(MCTS)代码详解【python】

    前文 xff1a AlphaGo Zero 详解 后文 xff1a AlphaZero五子棋网络模型 python 之前看了AlphaGo Zero 的整个流程 xff0c 接下来就要了解一下具体怎么实现的 毕设选择做用 AlphaGoZe
  • ubuntu16.04 socket传输文件,开源软件SocketFileTransfer

    arupcsedu SocketFileTransfer 参考网址https github com arupcsedu SocketFileTransfer build and run client 简单修改NWClient一个地方 spa
  • windows和linux是小端还是大端

    在博客园看到这么一篇文章 xff1a http www cnblogs com chio archive 2007 09 18 897126 html 之后百度了几个页面 xff0c 大端 高尾端 xff0c 小端 低尾端 xff0c 于是
  • Pelco_D-P协议

    PELCO产品协议解析 PELCO 派尔高 的监控器材在我国有很广泛的应用 PELCO有自己的传输控制协议 xff0c 当它的产品配套使用时 xff0c 可以互相兼容 但在某些情况下 xff0c 由 于工程的需要 xff0c 要求用其它设备
  • Android .so逆向学习之路-NDK环境搭建和GCC交叉编译配置

    NDK环境搭建和使用 一 Android NDK环境变量配置 xff1a 从Android官方下载NDK工具 xff0c 然后在系统变量中记得添加NDK主目录 xff0c 不然无法使用ndk build命令编译应用 使用NDK手动编译生成

随机推荐

  • 打造自己的字节序转换函数(16位、32位和64位)

    打造自己的字节序转换函数 xff08 16位 32位和64位 xff09 分类 xff1a c c 43 43 linux windows 2010 12 22 17 05 582人阅读 评论 1 收藏 举报 在计算机科学领域中 xff0c
  • 串口通信基本接线方法

    目前较为常用的串口有9针串口 xff08 DB9 xff09 和25针串口 xff08 DB25 xff09 xff0c 通信距离较近时 lt 12m xff0c 可以用电缆线直接连接标准RS232端口 RS422 RS485较远 xff0
  • 字符串库函数大全

    打开string h头文件 xff0c 网址 xff1a https en cppreference com w c string byte 抽出了常用的字符串操作函数 xff0c 权当手册用了 1 字符串基本操作 strcpy xff1a
  • RPlidar(一)——雷达试用

    先附一张RPlidar的图片 以下为本人初次通过ubuntu使用RPlidar 首先将RPlidar连接到电脑上 然后在terminal输入 ls dev ttyUSB 更改com port 权限 sudo chmod 666 dev tt
  • RPlidar学习(三)——RPlidar源代码库

    1 头文件简介 rplidar h 一般情况下开发的项目中仅需要引入该头文件即可使用 RPLIDAR SDK 的所有功能 rptypes h 平台无关的结构和常量定义 rplidar protocol h 定义了 RPLIDAR 通讯协议文
  • PC读写西门子PLC寄存器的值

    https blog csdn net weixin 29482793 article details 81873280
  • 编码的历史

    快下班时 xff0c 爱问问题的小朋友Nico又问了一个问题 xff1a 34 sqlserver里面有char和nchar xff0c 那个n据说是指unicode的数据 xff0c 这个是什么意思 34 并不是所有简单的问题都很容易回答
  • 教你如何通过MCU配置S2E为TCP Server的工作模式

    在上一篇文章中讲了 如何通过MCU配置S2E为UDP模式 xff0c 相信小伙伴们已经了解了S2E的基本功能 xff0c 在这一篇中 xff0c 我们再接再厉 xff0c 继续学习一下 如何通过MCU配置S2E为TCP Server的工作模
  • ubuntu配置USB权限

    usbcan设备在ubutu下使用 xff0c 每次必须动用root权限才能使用 xff0c 比较繁琐 参考如下文章进行配置 xff1a https blog csdn net bigdog 1027 article details 790
  • SocketCAN学习笔记

    1 对SocketCAN的理解 69条消息 对Socket CAN的理解 xff08 1 xff09 CAN总线原理 yuzeze的博客 CSDN博客 can socket 对Socket CAN的理解 xff08 2 xff09 Sock
  • Golang写Post请求并获取返回值

    直接上代码 xff0c 其中可以在下面代码中添加 package main import fmt net http io ioutil net url func main 需要post的数据 以key value形式提交 data 61 m
  • postMan 汉化

    1 下载postman解压安装 xff0c 下载地址Postman 2 下载汉化包 Release 9 2 0 hlmd Postman cn GitHub 选择postMan对应的版本 3 找到postman根目录我的在c盘 xff0c
  • 2022 小学组试题

    1 史密斯数 若一个合数的质因数分解式逐为位相加之和等于其本身逐位相加之和 则称这个数为smith数 如4937775 3 5 5 65837 而3 5 5 6 5 8 3 7 42 4 9 3 7 7 7 5 42 所以4937775是s
  • usaco 1 回文素数快速筛选

    求指定区间的回文素数 include lt bits stdc 43 43 h gt define N 10000010 using namespace std bool st N int cnt 61 0 primes N n m voi
  • C++ STL 学习笔记

    MAP的用法 xff1a 389找不同 给定两个字符串 s 和 t xff0c 它们只包含小写字母 字符串 t 由字符串 s 随机重排 xff0c 然后在随机位置添加一个字母 请找出在 t 中被添加的字母 示例 输入 xff1a s 61
  • 大模型平台

    大模型训练平台的算力急速增长 xff1a 据报道 xff0c GPT3 5 的训练使用了微软专门建设的 AI 计算系统 xff0c 由 1 万个 V100 GPU 组成的高性能网络集群 xff0c 总算力消耗约 3640 PF days 即
  • Float IP 浮动IP地址

    xfeff xfeff 就是多个主机工作在 同一个集群中 xff0c 即两台主机以上 每台机器除了自己的实IP外 xff0c 会设置一个浮动IP xff0c 浮动IP与主机的服务 xff08 HTTP服务 邮箱服务 xff09 绑在一起的
  • linux 下安装 c++编译器的方法

    xfeff xfeff 假设你的电脑能够访问internet xff0c 这个命令会自动从网络下载并把软件安装到本地 超级用户权限 xff1a yum y install gcc c 43 43 另外一定不要天真的认为linux 下面 编译
  • linux 内核编译错误的原因

    xfeff xfeff 直接编译centos 7 内核目录下的代码出现如下错误 xff1a root 64 localhost 3 10 0 123 el7 x86 64 make make 1 No rule to make target
  • ifconfig 看到Rx error overrun 如何解决

    xfeff xfeff 一台机器经常收到丢包的报警 xff0c 先看看最底层的有没有问题 ethtool em2 egrep 39 Speed Duplex 39 Speed 1000Mb s Duplex Full ethtool S e