前几天在vultr上面买了一台服务器,装的是Ubuntu 18.04LTS,想用speedtest测一下速看看带宽怎么样。
我使用的是 apt install speedtest-cli
安装的speedtest脚本,结果发现上传速度不尽如人意。
root@littlebear:~# speedtest
Retrieving speedtest.net configuration...
Testing from Choopa, LLC (207.246.*.*)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Starry, Inc. (Los Angeles, CA) [2.73 km]: 4.27 ms
Testing download speed................................................................................
Download: 1871.81 Mbit/s
Testing upload speed......................................................................................................
Upload: 4.17 Mbit/s
经过找果果帮忙排查问题(感谢果果!赞美果果!),初步排除了系统版本和内核版本的原因。我甚至一度怀疑我的vultr账户被官方限速,开了一个ticket询问此事。
眼尖的小熊发现果果发来的截图中,他使用的不是apt安装的speedtest,而是github上面的python脚本。于是我找到了那个repo,使用那个脚本运行了一遍,发现一切正常。可以判断是apt安装的speedtest程序存在问题。
github上面speedtest-cli的repo地址:https://github.com/sivel/speedtest-cli
使用方法
wget -O speedtest https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest.py
./speedtest
正确的测试结果
root@littlebear:~# python3 speedtest.py
Retrieving speedtest.net configuration...
Testing from Choopa, LLC (207.246.*.*)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Starry, Inc. (Los Angeles, CA) [2.73 km]: 1.728 ms
Testing download speed................................................................................
Download: 1355.15 Mbit/s
Testing upload speed......................................................................................................
Upload: 1900.53 Mbit/s
我参考了这篇文章,大概了解了是speedtest的bug。(具体的技术细节咱也看不懂)这个bug已经在speedtest上游的新版本中被修复,可是apt里面的还是老版本,所以这个bug依旧存在。
通过查询apt里面speedtest-cli的包。我发现19.04的版本更新,可能不存在这个问题。但是18.04LTS的speedtest比较老,这个问题存在。而Ubuntu相关的维护人员已经知晓这个bug,但是不知道为什么处于某种原因没有将其修复。
bug tracking page:https://bugs.launchpad.net/ubuntu/+source/speedtest-cli/+bug/1828929
我就‘顺便’看了一眼Arch Linux中此package的版本状态,发现是最新的,应该不存在这种问题…(然后就被Arch神教种草了)
所以,使用apt安装的speedtest存在上传速度测试不准确的问题,使用github的脚本即可规避。希望Ubuntu的维护人员可以尽快合并上游代码,解决此问题。