专栏首页云计算教程系列快来测一测你的网速吧!
原创

快来测一测你的网速吧!

本教程指导如何使用iPerf进行网络吞吐量测试,iPerf是一种命令行工具,通过测量服务器可以处理的最大网络吞吐量来诊断网络速度问题。它在遇到网络速度问题时特别有用,因为您可以使用iPerf来确定哪个服务器无法达到最大吞吐量。

准备

一台已经设置好可以使用sudo命令的非root账号的CentOS服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器

安装iPerf

iperf软件包包含在大多数Linux发行版的存储库中。

Debian和Ubuntu

apt-get install iperf

CentOS

CentOS存储库没有iPerf。我们使用EPEL存储库,它是用于在RedHat系统(如RHEL和CentOS)上安装第三方软件包的存储库:

yum install epel-release
yum update
yum install iperf

Arch Linux

pacman -S iperf

openSUSE

zypper install iperf

Gentoo

emerge iperf

运行emaint --sync安装iPerf软件包。此外,默认情况下,您需要用iperf命令替换/usr/bin/iperf3。此路径可能因您的iPerf版本而异。

如何使用iPerf

在测试连接的计算机上安装iPerf。如果您在个人计算机上使用基于Unix或Linux的操作系统,则可以在本地计算机上安装iPerf。

但是,如果要测试服务器的吞吐量,最好使用另一台服务器作为终点,因为本地ISP可能会施加可能影响测试结果的网络限制。

TCP客户端和服务器

iPerf需要两个系统,因为一个系统必须充当服务器,而另一个系统充当客户端。客户端连接到您正在测试速度的服务器。

在您计划测试的服务器上,以服务器模式启动iPerf:

iperf -s

您应该看到类似于的输出:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------

在您的第二个服务器上,进行关联操作。替换198.51.100.5为第一个服务器的IP地址。

iperf -c 198.51.100.5
------------------------------------------------------------
Client connecting to 198.51.100.5, TCP port 5001
TCP window size: 45.0 KByte (default)
------------------------------------------------------------
[ 3] local 198.51.100.6 port 50616 connected with 198.51.100.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec

您还将在iPerf服务器上看到连接和结果:

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[ 4] local 198.51.100.5 port 5001 connected with 198.51.100.6 port 50616
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec

要停止iPerf服务器进程,请按CTRL + c

UDP客户端和服务器

使用iPerf,您还可以测试通过UDP连接实现的最大吞吐量。

启动UDP iPerf服务器:

iperf -s -u
------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------

将您的客户端连接到iPerf UDP服务器。替换198.51.100.5为您的IP地址:

iperf -c 198.51.100.5 -u
------------------------------------------------------------
Client connecting to 198.51.100.5, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 198.51.100.6 port 58070 connected with 198.51.100.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 893 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.084 ms 0/ 893 (0%)

1.05 Mbits / sec远低于TCP测试中观察到的值。它也远远低于1GB 服务器提供的最大出站带宽上限。这是因为默认情况下,iPerf将UDP客户端的带宽限制为每秒1 Mbit。

您可以使用-b标志更改此值,将数字替换为您要测试的最大带宽速率。如果您正在测试网络速度,请将此数字设置为高于服务器提供的最大带宽上限:

iperf -c 198.51.100.5 -u -b 1000m

这告诉客户端尽可能达到每秒1000 Mbits的最大值。该-b标志仅在使用UDP连接时有效,因为iPerf未在TCP客户端上设置带宽限制。

------------------------------------------------------------
Client connecting to 198.51.100.5, UDP port 5001
Sending 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 198.51.100.5 port 52308 connected with 198.51.100.5 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 966 MBytes 810 Mbits/sec
[ 3] Sent 688897 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 966 MBytes 810 Mbits/sec 0.001 ms 0/688896 (0%)
[ 3] 0.0-10.0 sec 1 datagrams received out-of-order

这次的结果数值相当高。

双向测试

在某些情况下,您可能希望测试两台服务器以获得最大吞吐量。使用iPerf提供的内置双向测试功能可以轻松完成此操作。

要测试两个连接,请从客户端运行以下命令:

iperf -c 198.51.100.5 -d

iPerf将在客户端服务器上启动服务器和客户端连接(198.51.100.6)。完成此操作后,iPerf会将iPerf服务器连接到客户端,该连接现在既充当服务器连接又充当客户端连接。

------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
------------------------------------------------------------
Client connecting to 198.51.100.5, TCP port 5001
TCP window size: 351 KByte (default)
------------------------------------------------------------
[ 3] local 198.51.100.6 port 50618 connected with 198.51.100.5 port 5001
[ 5] local 198.51.100.6 port 5001 connected with 198.51.100.5 port 58650
[ ID] Interval Transfer Bandwidth
[ 5] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
[ 3] 0.0-10.2 sec 1.28 GBytes 1.08 Gbits/sec

在服务器上,您将看到:

------------------------------------------------------------
Client connecting to 198.51.100.6, TCP port 5001
TCP window size: 153 KByte (default)
------------------------------------------------------------
[ 6] local 198.51.100.5 port 58650 connected with 198.51.100.6 port 5001
[ 6] 0.0-10.1 sec 1.27 GBytes 1.08 Gbits/sec
[ 5] 0.0-10.2 sec 1.28 GBytes 1.08 Gbits/sec

选项

选项

描述

-f

更改运行测试的格式。例如,您可以使用-f k以每秒Kbits而不是每秒Mbits的速度获得结果。有效选项包括m(Mbits,默认),k(Kbits),K(KBytes)和M(MBytes)。

-V

强制iPerf使用IPv6而不是IPv4。

-u

更改定期带宽测试之间的间隔。例如,-i 60将每60秒生成一个新的带宽报告。默认值为零,其执行一次带宽测试。

-p

更改端口。未指定端口时,默认端口为5001.您必须在客户端和服务器上都使用此标志。

-B

将iPerf绑定到特定的接口或地址。如果通过server命令传递,则将设置传入接口。如果通过client命令传递,则将设置传出接口。

更多信息

有关此主题的其他信息,您可能需要参考以下资源:


参考文献:《Network Throughput Testing with iPerf》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Ubuntu 18.04上使用Kubeadm创建Kubernetes 1.11集群

    Kubernetes是一个容器编排系统,可以大规模管理容器。Kubernetes最初由谷歌根据其在生产中运行容器的经验开发而成,是一个开源的,并由世界各地的社区...

    SQL GM
  • 如何在CentOS 7上安装和配置Sphinx

    Sphinx是一个开源搜索引擎,允许全文搜索。众所周知,它能非常有效地对大数据进行搜索。要编制索引的数据通常来自非常不同的来源:SQL数据库,纯文本文件,HTM...

    SQL GM
  • 如何在Ubuntu 14.04上设置R.

    R是一种流行的开源编程语言,专门用于统计计算和图形。它被统计学家广泛用于开发统计软件和执行数据分析。R的优势之一是允许用户创作和提交自己的包,因此它具有高度且易...

    SQL GM
  • 如何在小程序中实现 WebSocket 通信

    在以前的文章中,我们介绍了HTTP通讯,这种通讯有一个缺点,如果我想从直接从服务器发消息给客户端,需要客户端先发起HTTP请求后服务器才能返回数据,且后续服务器...

    Lonely永夜
  • nginx使用学习之正向代理、反向代理、负载均衡(配置实例详解)

    Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中...

    IT大咖说
  • 明月开始接受网站托管和服务器代运维服务

    明月开始服务器代运维服务器已经有一段时了,现在大大小小也已经代运维十多个服务器了,这还不包括站长们免费帮忙的运维服务支持以及公司的服务器、朋友的服务器等等,期间...

    明月云服务
  • kylin集群Nginx负载均衡

    Nginx负载均衡 1, Nginx负载均衡简介 跨多个应用程序实例的负载平衡是优化资源利用率,最大化吞吐量,减少延迟以及确保容错配置的常用技术。 可以使用ng...

    Spark学习技巧
  • 在 Android 设备上搭建 Web 服务器

    一般而言,Android 应用在请求数据时都是以 Get 或 Post 等方式向远程服务器发起请求,那你有没有想过其实我们也可以在 Android 设备上搭建一...

    叶应是叶
  • 视频直播系统开发中的数据库创建方案

    我们之前为大家介绍过直播平台搭建中的服务器环境配置流程。我们今天介绍下视频直播平台开发搭建中数据库该如何创建?

    q3557873521
  • 流媒体服务器平台开发SpringBoot整合WebSocket实现服务器向浏览器主动发送消息的过程方式

    Spring Boot 设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置...

    EasyNVR

扫码关注云+社区

领取腾讯云代金券