记一次虚机上传过慢问题排查

最近线上虚机有个特殊的用户反馈,用户反馈虚机从A服务器下载文件特别慢,于是scp A服务器数据到本地client,发现 只有几十K的流量。

当时第一反应怀疑是虚机负载压力比较大,但是查看虚机IO以及负载都很低。。。。

然后tcpdump抓包发现有大量重传, 虚机A mtu 1450 , 但是抓包存在 length 1466的包都重传了,理应分片为啥不分片呢?

所以还是哪块网络有问题。因为包过大内核协议栈理应理应会交给CPU做分片处理,但是tcpdump抓内核协议栈里的却没有分片,所以怀疑不是CPU做的分片,是不是网卡做的分片,所以怀疑是不是开了tso把分片卸载到网卡了,最终查看网卡参数虚机确实是开了tso了。

TSO(transimit segment offload)是针对tcp而言的,是指协议栈可以将tcp 分段的操作offload到硬件的能力,本身需要硬件的支持。当网卡具有TSO能力时,上层协议栈可以直接下发一个超过MTU数据包,而把数据包拆分的动作交给硬件去做,节省cpu资源。

所以原因是用户开了tso ,但是宿主机上网卡是基于ovs-dpdk的,但是ovs-dpdk没开启tso支持,所以导致了本次网络问题。临时解决办法让用户关了tso,后来网络就好了

通过linux命令可以查看网络接口是否支持TSO和GSO特性:
复制代码
# ethtool -k eth0
tcp-segmentation-offload: on
udp-fragmentation-offload: on
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
通过linux命令,可以打开和关闭tso功能:
复制代码
ethtool -K eth0 tso on   
ethtool -K eth0 tso off

参考文档:

https://jimizhou.com/virtual-network

https://docs.openvswitch.org/en/latest/topics/userspace-tso/

相关推荐
DevSecOps选型指南4 小时前
2025软件供应链安全最佳实践︱证券DevSecOps下供应链与开源治理实践
网络·安全·web安全·开源·代码审计·软件供应链安全
利刃大大4 小时前
【在线五子棋对战】二、websocket && 服务器搭建
服务器·c++·websocket·网络协议·项目
国科安芯5 小时前
抗辐照MCU在卫星载荷电机控制器中的实践探索
网络·嵌入式硬件·硬件工程·智能硬件·空间计算
EasyDSS6 小时前
国标GB28181设备管理软件EasyGBS远程视频监控方案助力高效安全运营
网络·人工智能
玩转4G物联网6 小时前
零基础玩转物联网-串口转以太网模块如何快速实现与TCP服务器通信
服务器·网络·物联网·网络协议·tcp/ip·http·fs100p
派阿喵搞电子6 小时前
Ubuntu下有关UDP网络通信的指令
linux·服务器·网络
光芒Shine6 小时前
【物联网-ModBus-ASCII】
物联网·网络协议
搬码临时工7 小时前
外网访问内网服务器常用的三种简单操作步骤方法,本地搭建网址轻松让公网连接
服务器·网络·智能路由器
帽儿山的枪手8 小时前
程序员必掌握的iptables五表五链
linux·网络协议
Fortinet_CHINA8 小时前
引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办
网络·安全