![尽管网络速度很好,但 speedtest-cli 非常慢](https://linux22.com/image/1590805/%E5%B0%BD%E7%AE%A1%E7%BD%91%E7%BB%9C%E9%80%9F%E5%BA%A6%E5%BE%88%E5%A5%BD%EF%BC%8C%E4%BD%86%20speedtest-cli%20%E9%9D%9E%E5%B8%B8%E6%85%A2.png)
我在这里遇到了一个奇怪的问题。在我的本地家庭服务器(Debian 9.9)上,speedtest-cli 及其 python 挂件非常慢。由于我使用它来监控我的 ISP 连接稳定性,所以这是一个问题。
我首先想到的是我的服务器或者速度测试总体上有问题,但有趣的部分从这里开始。
从我的电脑(Windows 10)进行速度测试,直接连接到路由器:
fast.com 370 Mbit/s
speedtest.net(server 15819) 242 Mbit/s down, 50,78 Mbit/s up
使用我的笔记本电脑(Arch Linux)进行速度测试,直接连接到路由器:
fast.com 310 Mbit/s
speedtest.net(server 15819) 240 Mbit/s down, 50,8 Mbit/s up.
到目前为止一切顺利,但关于直接连接到路由器的 Debian 服务器:
speedtest-cli(server 15819) 3,88 Mbit/s down, 3,69Mbit/s up
所以可能是服务器坏了...但是不是,连接速度很好。
wget --output-document=/dev/null https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.9.0-amd64-netinst.iso
leads to a download speed of about 200 Mbit/s.
直接在路由器上进行速度测试,结果也约为 250 Mbit/s。
我已经尝试清除 speedtest-cli、重新启动服务器等等。
知道这是怎么回事吗?为什么命令行 spedtest 会失败,而其余的网络设置却正常?
答案1
我正在弄乱这个 - 并安装了 speedtest-cli 和 speedtest++。(不幸的是,我的 GUI PC 位于 homeplug 连接后面,但请相信我说的其余部分)。这可能取决于所使用的协议。
以下是 Ubuntu 16.04 存储库中版本的结果
geek@heckate_router:/etc$ speedtest-cli
Retrieving speedtest.net configuration...
Testing from Singtel Fiber (XXX.XXX.XXX.XXX)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Singtel (Singapore) [3.91 km]: 230.77 ms
Testing download speed................................................................................
Download: 648.47 Mbit/s
Testing upload speed......................................................................................................
Upload: 3.15 Mbit/s
有趣的是,git 中的版本在上传方面有更好的结果,尽管仍然与 speedtest++ 和 ookla 的速度测试 cli 结果不一致
geek@heckate_router:~/speedtestgittest$ ./speedtest_cli_git.py
Retrieving speedtest.net configuration...
Testing from Singtel Fiber (xxx.xxx.xxx.xxx)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by MyRepublic (Singapore) [3.91 km]: 233.882 ms
Testing download speed................................................................................
Download: 607.12 Mbit/s
Testing upload speed................................................................................................
Upload: 59.29 Mbit/s
此工具报告的结果可能会与 Speedtest.net 不一致。有几个概念需要注意,它们会导致潜在的不一致:
Speedtest.net 已迁移到使用纯套接字测试,而不是基于 HTTP 的测试
Ookla似乎也意识到了这一点
性能 - 所有开源版本都使用我们测试引擎的旧版本,该版本早于我们的 Flash 测试。是的,它就是那么旧。这对于快速连接来说并不理想。我们还看到流行的版本受到 DNS 计时和各种其他方法问题的影响。此外,大多数都是用高级语言编写的,这些语言通常会在达到高带宽水平时出现问题。
虽然我怀疑需要进行一些过于深入的性能分析才能确定其是协议还是语言。
我一直在使用速度测试++直到我第一次写下这个答案后大约 5 分钟,结果才好得多。
geek@heckate_router:~$ SpeedTest
Speedtest ++
SpeedTest++ version 1.14
Speedtest.net command line interface
Info: https://github.com/taganaka/SpeedTest
Author: Francesco Laurita <[email protected]>
IP: XXX.XXX.XXX.XXX ( Singtel Fiber ) Location: [<redacted>, <redacted>]
Finding fastest server... 9575 Servers online
............
Server: Singapore speedtest.singnet.com.sg:8080 by Singtel (3.91278 km from you): 1 ms
Ping: 1 ms.
Jitter: 0 ms.
Determine line type (2) ........................
Fiber / Lan line type detected: profile selected fiber
Testing download speed (32) ................................................................................................................................................................................................................................................................................................
Download: 989.61 Mbit/s
Testing upload speed (12) .................................................................................................................................................................................................................................................................................................................................................................................................................................................
Upload: 998.73 Mbit/s
对比一下官方客户端(并且他们的博客建议有人编写了一个应用程序来为您监控历史速度),并且进行 CSV 和 TSV 输出
geek@heckate_router:~$ speedtest
Speedtest by Ookla
Server: Singtel - Singapore (id = 13623)
ISP: Singtel Fiber
Latency: 1.91 ms (0.05 ms jitter)
Download: 932.83 Mbps (data used: 479.6 MB)
Upload: 941.23 Mbps (data used: 424.7 MB)
Packet Loss: 0.0%
Result URL: <redacted>
正如你所看到的...速度是实质上不同的。
我记得当我摆弄它时,GUI 测试与 CLI 测试是相当的。
Speedtest ++ 和官方客户端使用原始套接字/自定义协议,在查找线速度。
答案2
开发人员似乎已经被这样的请求打败了,因此在 github 上的 readme 中发布了这些行:
不同版本的 Python 执行某些代码部分的速度会比其他代码部分快。CPU 和内存容量及速度在 Speedtest.net 和同一网络上的其他机器之间的不一致中起着重要作用。与不一致相关的问题将作为 wontfix 关闭,无需额外原因或上下文。
因此,这里的解决方案是在稳定且强大的 RAM/CPU 盒上使用非基于 Python 的基准测试。谷歌搜索向我展示了其中一个解决方案:基于 c++ 的 cli 速度测试https://github.com/taganaka/SpeedTest
答案3
speedtest-cli 完全崩溃,报告的结果非常不准确,而且 GitHub 上的开发人员“sivel”坚决拒绝解决 GitHub 上关于此问题的数十个问题,立即关闭并锁定这些问题而没有任何评论。
答案4
我猜你是从 apt 安装了 speedtest-cli。所以它会拉取旧的损坏版本。
尝试使用最新版本的 speedtest-cli
wget https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest.py
./speedtest.py