丢包排查思路

丢包杂谈

  • 背景介绍
  • 排查思路
  • 排查过程
    • 信息收集
    • 信息分析
    • 系统调优
    • 系统跟踪
  • 说明

背景介绍

公司自研的一款产品“数据采集器”,主要功能为“数据采集”和“数据解析”,在刚投入使用时,效果还不错。但是随着客户业务量的不断增长,便开始遇到了瓶颈:在交换机镜像流量特别大的场景下,出现了丢包的场景,并且该问题在多家客户出现。

排查思路

在镜像流量很大的场景下,持续出现丢包,那么要分析的就是,到底是网卡处理能力的问题?还是操作系统底层Libpcap的数据采集能力有限,还是程序内部解析上存在瓶颈?我们需要从如下三个方向进行分析:

  1. 网卡处理模块
  2. 数据采集模块
  3. 数据解析模块

排查过程

信息收集

# 1. 查看操作系统版本
cat /etc/redhat-release

# 2. 查看服务器资源占用情况
turbostat -i 1
top
free -g

# 3. 检查服务器网卡端口类型、连接信息、速率等
ethtool 网卡名

# 4. 显示网卡驱动信息,如驱动名称,版本等
ethtool -i 网卡名

# 5. 查看网卡型号,bus号信息
lspci | grep Eth

# 6. 查看端口buffer size相关参数值
ethtool -g 网卡名

# 7. 查看ifconfig,关注eth_drop
ifconfig

# 8. 收集底层报文统计信息
ethtool -S 网卡名 > /tmp/ethtools-S.txt

# 9. 查看网卡中断均衡机器数量
cat /proc/interrupts | grep 网卡名
cat /proc/interrupts | grep 网卡名 | wc -l

# 10. 查看网卡流量统计信息
sar -n DEV

信息分析

客户信息收集完成之后,分析如下:

  1. 业务高峰期瞬时流量带宽达到:4.2G
  2. 网卡rx接收队列大小为:2048
  3. 网卡驱动的版本过于老旧,需要更新
  4. 网卡中断均衡暂未开启,可进行优化

系统调优

# 1. 调整网卡rx接收队列,由2048调整为4096
ethtool -G rx 4096

# 2. 更新网卡的驱动版本

# 3. 开启网卡中断均衡
lspci | grep Eth
cat /sys/bus/pci/devices/0000\:网卡号/numa_node
./irq_balance.sh -i 网卡名 -n node节点

系统跟踪

参数调整完成之后,丢包的数量出现了大幅的减少,但是仍然存在丢包。那么下一步的排查方向就是数据采集方向了。系统底层的Libpcap最大支持多大的带宽流量呢?这个是我们后续进行压测的目标。

说明

本章中提到的irq_balance.sh脚本是开启网卡中断的一个脚本,如果需要的话,可联系笔者获取。

你可能感兴趣的:(linux,网络传输,交换机,运维,服务器)