最近在测试一个项目,里面涉及到一个测试case:在linux服务器上,当网络带宽较差时,观察服务的消息处理能力和表现。限制网卡带宽有许多方法,比如Wondershaper或者ethtool。那验证限速效果呢?
最简单的方式是利用wget一个外网上的包,比如各种软件的下载包,在下载过程中,wget会显示带宽的下载速率,然后通过下载速率x2来估算整个带宽。但这种方式需要人工观察整个过程,只有下载速率,也没有汇总的结果,而且没有考虑不同地区的网络延迟情况。在这里,我给大家推荐一款比较专业的网络测速的工具,大名鼎鼎的SpeedTest
 

1.简介

1.1 SpeedTest是干嘛的?

  1. 测试上性和下行带宽(即当前网络的能力)
  2. 测试网络延时           (即网络的稳定性)
 

1.2 SpeedTest的特点

  1. 无需依赖浏览器:支持web,客户端,命令行三种方式运行
  2. 支持远程服务器和低功耗设备:通过关闭预分配内存参数降低内存消耗
  3. 可实现自动化脚本测一段时间网速:在命令行下编写shell脚本结合crontab可以获取一天内不同时间段的网速
  4. 支持不同操作系统的命令行测速:支持windows,linux,macos以及Android和Ios。
  5. 通过CSV,JSONL或 JSON查看测速结果:支持多次输出格式
 

1.3 相关测试场景

1)排查客户网络问题
  • 打开web页面,加载部分资源失效
  • 打开web页面,websocket接口超时
  • 打开web页面,上传图片和下载文件超时失败
2)测试服务端外网带宽
  • 验证公网限速是否生效
  • 检测网络抖动以及延时
 

2.Speedtest的打开方式

当前有三种方式运行SpeedTest,最方便的就是打开浏览器使用SpeedTest:
2.安装对于操作系统客户端
3.命令行执行
下面分别介绍三种方式,其中第二种就以mac客户端举例,其他系统的安装和操作基本是一样的。
 

2.1 web方式

1) 浏览器输入:https://www.speedtest.cn/,点击 “测速”进行测试
 
2) 设置计量单位和测速的量程(可选)
单位指的是网络速率单位,这里换算关系为:1MB=1024KB=1024*1024b,我们就选择MB为单位。
量程指的是要测速的总流量,这里根据自己情况选择即可。
 
3) 等测速完毕后,会自动出一份报告
 
 

2.2 客户端方式

下载对应系统的客户端,这里我选择MacOS软件,你可以根据自己的情况下载对应的APP,后续测速的操作方式基本都一样。
 
2)选择网络测速,点击测速
 
3)客户端生成的报告
报告解释:
1. 下载速度达到了11MB
2.上传速度达到了11MB
3. ping速度5ms
可以看到网速还是不错的。
 

2.3 命令行

命令行是方便和灵活的方式,结合脚本可以灵活地制定出各种SpeedTest-Cli的使用场景。

speedtest-cli是一个python小工具,所以在安装speedtest之前,建议先安装好python2环境

2.3.1 安装

首先需要注意的是,只有用pip安装才会安装到最新版的SpeedTest-cli,无论是brew,yum还是apt,最后安装的版本都有可能是老版本。

2.3.1.1 Mac(brew安装)

brew install speedtest-cli

2.3.1.2 Centos(yum安装)

1) 查找speedcli-test

yum search speedtest-cli
2) 安装speedtest-cli
sudo yum install python2-speedtest-cli.noarch -y

2.3.1.3 Ubuntu(apt安装)

sudo apt install -y speedtest-cli

2.3.1.4 pip安装方式(推荐

#此方法需要预装python2和pip
pip install git+https://github.com/sivel/speedtest-cli.git

2.3.2 命令行执行

2.3.2.1 帮助

这里以speedtest-cli的2.1.2版本为例,不同版本的命令行参数可能略有不同。
speedtest-cli -h
optional arguments:
-h, --help show this help message and exit
--no-download Do not perform download test                                 //指定该参数将不测试下载速度,默认是要测试下载速度的,建议不要指定。
--no-upload Do not perform upload test                                         //指定该参数将不测试上传速度,默认是要测试上传速度的,建议不要指定。
--single Only use a single connection instead of multiple. This
simulates a typical file transfer.                                                      //使用单信道,默认使用多信道,测试单文件上传下载可以开启此项。
--bytes Display values in bytes instead of bits. Does not
affect the image generated by --share, nor output from
--json or --csv                                                                           // 默认单位使用位(bit),开启此项会使用单位为字节(bytes),一个字节相当于8个位。此参数无法影响csv和json,图像输出中的单位(仍旧是bit)。
--share Generate and provide a URL to the speedtest.net share
results image, not displayed with --csv
--simple Suppress verbose output, only show basic information        //输出概要结果,而不是详细结果
--csv Suppress verbose output, only show basic information
in CSV format. Speeds listed in bit/s and not affected
by --bytes                                                                                  //输出为csv格式,速度单位限定为bit/s
--csv-delimiter CSV_DELIMITER                                                   //设定csv的分隔符,默认为逗号
Single character delimiter to use in CSV output.
Default ","
--csv-header Print CSV headers                                                   //输出csv的header,就是表头
--json Suppress verbose output, only show basic information           //输出为json格式,速度单位限定为bit/s
in JSON format. Speeds listed in bit/s and not
affected by --bytes
--list Display a list of speedtest.net servers sorted by                      //查看当前speedtest用于测速的目的服务器
distance
--server SERVER Specify a server ID to test against. Can be supplied //指定目的服务器ID进行测试,这里的ID为--list查询到的服务器ID
multiple times
--exclude EXCLUDE Exclude a server from selection. Can be supplied //排除目的服务器ID进行测试,这里的ID为--list查询到的服务器ID
multiple times
--mini MINI URL of the Speedtest Mini server                                   //这里试了下,貌似目的服务器不存在,超时了
--source SOURCE Source IP address to bind to                                //指定源ip,其实就是本机ip,可以用ifconifg查看本机ip
--timeout TIMEOUT HTTP timeout in seconds. Default 10                  //设置http超时时间,默认为10s
--secure Use HTTPS instead of HTTP when communicating with
speedtest.net operated servers                                                        //指定--secure后,会使用https协议进行通信
--no-pre-allocate Do not pre allocate upload data. Pre allocation is   //这里是speedcli-test的内存使用策略,默认开启就好,指定此参数会占用过多内存
enabled by default to improve upload performance. To
support systems with insufficient memory, use this
option to avoid a MemoryError
--version Show the version number and exit                                     //查看对应版本
 

2.3.2.2 实例

1) 执行默认测速
speedtest-cli
过一会儿就能输出对于的报告,如图,我的实际上传速度为73Mbps,下载速度为92.75Mbps,我家办理的网正好是百兆带宽。
 
2)输出简要报告
speedtest-cli --simple
 
3)使用https通信
speedtest-cli --simple --secure
 
4)设置网速单位为字节
speedtest-cli --simple --secure --bytes
 
5) 绑点源IP
speedtest-cli --source 192.168.31.133
 
6) 输出Json格式
speedtest-cli --json
 
7)CSV操作
a)输出csv-header
 
b)输出csv格式数据
 
c)设置csv分隔符
 
8) 查看当前用于测试的目的服务器
speedtest-cli --list
 
 
9) 指定测试的目的服务器测速
speedtest-cli --server 5485
 
以上就是speedtest的所有安装以及使用介绍,编写不易,如果对你有帮助,辛苦点个赞,有疑问可以在文章后面留言~
 
 

博主:测试生财

座右铭:专注测试与自动化,致力提高研发效能;通过测试精进完成原始积累,通过读书理财奔向财务自由。

csdn:https://blog.csdn.net/ccgshigao

博客园:https://www.cnblogs.com/qa-freeroad/

51cto:https://blog.51cto.com/14900374

 

网络测速神器:SpeedTest深度指南的更多相关文章

  1. 网络测速命令--speedtest

    网络测速 speedtest-cli 顾名思义,这个命令为网络测速命令,基于Python编写,测试系统网络的上传下载速度,GitHub托管的项目地址,以下列出常见的用法 安装命令 pip instal ...

  2. Linux下3种常用的网络测速工具

    大家好,我是良许. 不管你用的是什么操作系统,网速都是你非常关心的一个性能指标,毕竟,谁都不想看个视频结果网速卡到你怀疑人生.本文介绍三个 Linux 命令行下的网络测速工具,让你随时随地知道你的网络 ...

  3. iOS炫酷动画图案、多种选择器、网络测速、滑动卡片效果等源码

    iOS精选源码 对网络进行测速 自实现大标题,配合原生骨架屏demo 简单方便的pickerVIew记录数据 LZPickerView 科技风绘制组件,简单快速"画"出炫酷图案 R ...

  4. 网络抓包神器-Charles使用指南

    http://blog.csdn.net/liulanghk/article/details/46342205 目录 概述 安装 显示模式 PC端抓包 移动应用抓包 其他技能 charles使用问题汇 ...

  5. iperf 网络测速

    1.介绍 1) #  ipref -g   //这个最直观 2)Iperf 是一个网络性能测试工具.Iperf可以测试最大TCP和UDP带宽性能.Iperf具有多种参数和UDP特性,可以根据需要调整. ...

  6. 超详细的网络抓包神器 tcpdump 使用指南

    原文链接:Tcpdump 示例教程 本文主要内容翻译自<Tcpdump Examples>. tcpdump 是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在 ...

  7. 英雄联盟网络测速 v1.3 全服全区取延时+取服务器维护状态+机房地理位置

    全服全区取延时+取服务器维护状态+机房地理位置 v1.2修复了服务器状态获取不准确的bug 下载链接: https://pan.baidu.com/s/1c1LHIY8 

  8. 网络测速 php代码

    <?php /*=====http://hi.csdn.net/yinyiniao=====*/ $fp=fopen("cs.txt","w"); for ...

  9. 分析并实现 360 P1路由器上的测速功能(也可以针对金山测速功能)

    现在各种智能路由器以及一些PC上的防火墙软件,都提供网络测速功能.笔者对此进行了研究,并在自己的路由器上也实现了此功能.下面做一下总结 一般的网络测速,主要关注两个方面:网络延迟和下载速率 1.网络延 ...

随机推荐

  1. [SCOI2007]降雨量 线段树和区间最值(RMQ)问题

      这道题是比较经典的 \(RMQ\) 问题,用线段树维护是比较简单好写的.比较难的部分是判断处理.如果没有想好直接打代码会调很久(没错就是我).怎么维护查询区间最大值我就不再这里赘述了,不懂线段树的 ...

  2. day2. 六大基本数据类型简介

    一.基本数据类型 Number 数字类型 (int float bool complex) str 字符串类型 list 列表类型 tuple 元组类型 set 集合类型 dict 字典类型 二.Nu ...

  3. 【NOIP2015四校联训Day7】 题 题解(Tarjan缩点+DFS)

    前言:没错,这题的名字就这么直白.我们考试题. ------------------ 你需要完成$n$道题目.有一些题目是相关的,当你做一道题的时候,如果你做过之前对它有帮助的题目,你会更容易地做出它 ...

  4. Android 的Glide、TabLayout、RecyclerView(下一章补充)。

    今天的内容主要和一些依赖有关, //Glide依赖implementation 'com.github.bumptech.glide:glide:4.11.0'//Google Design依赖//n ...

  5. (转)Linux 下栈溢出问题分析解决 *** stack smashing detected *** XXXX terminated

    Linux 下栈溢出问题分析解决 *** stack smashing detected *** XXXX terminated 1.利用gdb 或者valgrind 定位到具体的代码 最近在Linu ...

  6. QT下UDP套接字通信——QUdpSocket 简单使用

    QT下UDP套接字通信--QUdpSocket QUdpSocket类提供一个UDP套接字. UDP(用户数据报协议)是一种轻量级.不可靠.面向数据报.无连接的协议.它可以在可靠性不重要的情况下使用. ...

  7. 微信商户H5支付申请不通过被驳回,拒绝原因提示:网站存在不实内容或不安全信息

    一.H5支付简介及使用场景说明 H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付 ...

  8. Vuex + localStorage + html实现简易todolist

    1.项目结构 2.Vuex,什么是Vuex? 官方文档上的介绍是:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种 ...

  9. 谈谈代码评审(code review)

    什么是代码评审(code review)? 根据维基百科的定义,代码评审是一种通过若干人员检阅源代码方式来进行的软件质量保证活动.根据软件工程的经典理论,代码评审应该是收益很高的活动,因其产生在Cod ...

  10. c++排序二叉树的出现的私有函数讨论,以及二叉树的删除操作详解

    c++排序二叉树的出现的私有函数讨论, 以及二叉树的删除操作详解 标签(空格分隔): c++ 前言 我在c++学习的过程中, 最近打了一个排序二叉树的题目,题目中出现了私有函数成员,当时没有理解清楚这 ...