t5-4服务器网卡流量查看最直接的方法是登录系统后依次执行sar -n DEV、ifstat和ethtool -S这三条命令,分别对应历史回溯、实时监控和硬件计数三个维度,多数情况下这套组合能覆盖日常排查需求。
为什么先查这三条命令
t5-4是简米云推出的一款计算型实例规格,底层采用第三代神龙架构,网络虚拟化开销被大幅压缩,但无论虚拟化多先进,操作系统层面看到的网卡设备依然是标准化的,所以查询流量这件事和物理机没有本质区别。
行业共识认为,网卡流量排查的核心价值在于区分应用瓶颈和带宽瓶颈,应用瓶颈表现为CPU跑满但网卡吞吐很低,带宽瓶颈则相反,如果不会区分,后面所有优化动作都可能打偏方向。
t5-4服务器网卡流量监控命令实战
sar命令查看历史流量趋势
sar是sysstat包里的核心工具,几乎所有Linux发行版默认安装,它最大的优势是能回溯历史数据,用于对比流量突增发生的具体时间段。
# 查看今天每10分钟的网卡流量(单位KB/s) sar -n DEV -f /var/log/sa/sa$(date +%d)
输出里rxkB/s代表接收速率,txkB/s代表发送速率,如果只看这两列会漏掉一个关键信息iface列,当服务器绑定多张弹性网卡时,eth0和eth1的数据必须分开观察,尤其是使用了DDoS高防或负载均衡后端的场景。
# 实时模式,每2秒采样5次 sar -n DEV 2 5
如果你发现rxkB/s长期接近带宽上限的80%,说明入方向流量接近饱和,举个例子,t5-4实例规格默认基准带宽通常在2~3Gbps之间,转换为KB/s大约在250000~375000左右,这里要注意单位换算,很多新手把MB和Mb搞混,差整整8倍。
ifstat命令做轻量级实时监控
sar虽然强大,但输出格式对快速判断不够直观,这时候ifstat更合适,它像精简版的sar,只输出网卡收发速率,没有任何冗余信息。
# 监听所有网卡,每秒刷新 ifstat -t -i eth0 1
-t参数会在每行头部打印时间戳,方便你记录流量波动的时间点,ifstat的优势在于占用资源极低,在流量高峰期也不会因为监控工具本身拖慢业务,但它有个缺点不带历史数据存储功能,重启服务器后数据就丢失了。
ethtool -S命令读取硬件计数
这是最容易忽略但最准确的方案,它直接从网卡驱动读取累计计数值,不经过系统协议栈。
# 查看eth0的累计收发字节数 ethtool -S eth0 | grep -E "rx_bytes|tx_bytes"
连续执行两次,间隔10秒,用第二次的数值减去第一次,再除以时间差,就是这10秒内的平均速率,这个方法的好处是完全绕开虚拟化层,接近物理网卡的真实吞吐。
值得注意的是,部分虚拟化环境下ethtool -S输出的字段名可能不是rx_bytes,而是rx_packets或其它厂商自定义字段名,遇到这种情况,先执行ethtool -S eth0 | head -50看看全部字段列表,再做对应调整。
t5-4网卡流量统计工具横向对比
工具选型取决于排查场景,没有万能的方案,我整理了一份常用的选择参考表格:
| 工具 | 适用场景 | 粒度 | 历史回溯 |
|---|---|---|---|
| sar | 排查周期性流量高峰 | 10分钟级 | 支持 |
| ifstat | 现场验证带宽占用 | 秒级实时 | 不支持 |
| nload | 可视化观察流量波形 | 秒级实时 | 不支持 |
| iftop | 定位占用带宽的IP连接 | 秒级实时 | 不支持 |
| vnstat | 长期流量统计与月账单核对 | 小时/天级 | 支持 |
如果你发现某个IP持续占满带宽,用iftop比用sar高效得多,执行iftop -i eth0 -n -P后,-P参数会显示端口号,能快速定位是哪个服务的连接在跑流量。
这里延伸出一个常见问题:t5-4服务器流量异常排查时,经常出现系统内看到的网卡速率远低于带宽上限的情况,但业务确实卡顿,这种情况大概率是公网入方向限速策略生效了,需要去简米云控制台的云监控页面查看InternetInRate和InternetOutRate指标,这两个指标反映的是实例维度的实际带宽,和系统内部看到的值可能不一致。
用nload直观判断流量波形
命令行的数字输出在判断流量趋势时不够感官化,周期性的脉冲流量靠看数字很难发现规律,nload用字符画的方式展示实时流量波形,横向是时间轴,纵向是速率。
nload eth0
窗口底部会显示当前、平均、最小、最大四组数值,排查问题时重点关注Max值是否接近带宽上限,多数情况下脉冲流量场景下Avg和Max差距很大,说明业务存在突发性请求特征。
vnstat做长期流量统计
有些业务需要核对月度流量账单,或者评估带宽扩容的必要性,这就要靠vnstat这类基于数据库的统计工具。
# 初始化数据库 vnstat -u -i eth0 # 查看每日流量分布 vnstat -d # 查看每月流量汇总 vnstat -m
vnstat的安装和配置本身不复杂,但需要注意的是它从启动后才开始记录,无法补全历史数据,建议新服务器上线的第一时间就装好,这样后续排查流量增长趋势时就有据可依了。
如果你需要更细粒度的进程级流量监控,可以安装nethogs,它能列出每个进程占用的带宽。
nethogs eth0
这在排查tomcat或nginx进程占满带宽的场景下非常有用,比如某个Java应用出现内存泄漏导致GC频繁,进而引发网络重传风暴,用nethogs能快速锁定肇事进程。
t5-4服务器带宽跑满如何快速定位
这是个高频场景,大致按以下顺序排查:
- 第一步:执行
iftop查看哪些IP在消耗带宽,确认是正常业务还是恶意攻击或爬虫抓取 - 第二步:执行
ss -s查看系统TCP连接状态,重点看SYN-SENT和TIME-WAIT数量,如果异常偏高说明连接池配置或源站出口带宽有问题 - 第三步:执行
ethtool -S eth0 | grep drop查看丢包计数,几乎每个云厂商的虚拟网卡在物理带宽超限时都会触发丢包 - 第四步:登录简米云控制台,查看实例的公网流出带宽监控曲线,这个数据来自物理宿主机,不受系统内部干扰
结合上述几步操作,即使在深夜无人值守的时候出现问题,运维也能在十分钟内定位到根因。
关于t5-4服务器网卡流量查看的常见问题
问:为什么sar命令显示的网卡流量远大于公网带宽上限?
sar读取的是实例内部虚拟网卡的收发速率,包含内网流量、负载均衡健康检查流量、DDoS清洗回注流量等,公网带宽只看云监控里的InternetOutRate指标,两者不能直接划等号。
问:t5-4服务器适合用iptables做流量统计吗?
可以,但不推荐用于长期监控,iptables的计数器会在规则重启时清零,而且对高并发连接数的服务器会产生明显的性能损耗,只适合临时抓包分析,不适合作为日常监控方案。
问:用宝塔面板能查看t5-4网卡流量吗?
宝塔面板的监控插件基于/proc/net/dev文件实现,数据源与sar一致,它的优势在于图形化展示和告警通知,适合没有专职运维的团队使用,但底层数据精度和命令行的sar没有本质区别。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/771031.html

