Python3 Speedtest-CLI突然测速大幅变慢问题求助
Raspberry Pi 4B 千兆以太网测速异常排查思路
问题背景
我制作了一款网络监控工具,每30分钟自动生成测速报告,采用Speedtest-CLI的标准Python实现方案。此前使用有线宽带时,工具测得的平均下载速度可达320MBps。
升级千兆光纤网络后:
- 光纤调制解调器路由器直连测速(Ookla官方工具)可达1332MBps
- 调制解调器配置透传模式连接Eero Pro 6E Mesh路由器后,笔记本直连Mesh测速980MBps,WiFi测速也超过500MBps
- 但搭载千兆以太网的Raspberry Pi 4B,无论直连Mesh还是光纤路由器,测速结果均降至130MBps以下。已尝试更换网线、检查连接稳定性,更新Pi上所有软件库,卸载重装Speedtest-CLI,问题仍未解决。
排查步骤
一、针对Speedtest-CLI的排查
- 直接运行原生
speedtest-cli命令行工具,对比与Python API封装的测速结果:若命令行版本同样速度偏低,说明问题出在Speedtest-CLI工具本身或其配置;若命令行版本速度正常,则问题源于你的Python代码逻辑。 - 手动指定测速服务器:默认自动选择的服务器可能存在兼容性或带宽瓶颈。先通过
speedtest-cli --list获取可用服务器列表,挑选延迟最低的服务器,用speedtest-cli --server <服务器ID>测试,观察速度变化。 - 启用多线程测速:部分Speedtest-CLI版本默认单线程运行,而Pi的单线程性能有限,无法支撑千兆带宽。尝试开启多线程,命令示例:
speedtest-cli --threads 8(Python API中对应设置threads参数)。 - 替换为Ookla官方Python SDK:Speedtest-CLI为第三方工具,可尝试切换至Ookla官方提供的Python SDK重新实现测速逻辑,验证是否能提升速度。
二、针对Raspberry Pi 4B硬件与系统的排查
- 确认以太网端口协商速率:运行
ethtool eth0,查看输出中的Speed字段,确认是否协商为1000Mbps(千兆)。若显示为100Mbps,说明端口未跑满千兆,可能是系统驱动或硬件兼容性问题。 - 测试本地网络传输速度:将Pi与另一台千兆设备(如笔记本)直连,使用
iperf3工具测试本地带宽。Pi端运行iperf3 -s,设备端运行iperf3 -c <Pi的IP地址>,若本地速度也无法达到千兆,说明Pi的以太网硬件或系统配置存在问题。 - 监控测速时的资源占用:测速过程中用
top或htop查看CPU、内存使用率,若CPU满载,说明Pi的单线程性能不足以支撑高速测速,需优化测速工具的线程配置或更换更高效的测速方式。 - 更新Pi固件:运行
sudo rpi-update更新系统固件,部分旧版本固件存在千兆以太网的兼容性Bug。
三、针对网络环境的排查
- 检查路由器QoS限制:部分路由器会对特定设备设置带宽限制,登录路由器后台,确认是否存在针对Pi的限速规则。
- 用其他方式验证下载速度:避开Speedtest平台,使用
wget下载大体积公开文件(如Linux镜像),测试实际下载速度,判断是Speedtest平台的问题还是Pi的整体网络速度受限。
内容的提问来源于stack exchange,提问作者Bart
相关产品推荐
相关产品推荐

