zoukankan      html  css  js  c++  java
  • 测试linux服务器带宽

    测试准备

    1. 计划考量参数

     TCP上传数据带宽

     TCP下载数据带宽

     UDP上传带宽

     UDP下载带宽

     多并发支持

     稳定性

     Tcp通讯网络延迟(小包:32、中包1k、大包1M)

     UDP通讯网络延迟(小包:32、中包1k、大包1M)

     协议可用性

     指定文件真实http下载速度

    2. 使用的软件

     Iperf:可完成考量参数1-6

     Pstools:可完成考量参数7-8

     其余软件:完成考量参数9-10

    测试执行

    1. Iperf

    1.1. 安装软件

    服务器端(Centos)执行如下命令

    wget http://downloads.es.net/pub/iperf/iperf-3.0.6.tar.gz

    下载完成后进行解压

    tar zxvf iperf-3.0.6.tar.gz

    进入解压后的程序目录,执行以下命令

    ./configure && make && make install
    Iperf3 -s

    其中“iperf3 -s”命令为以服务器模式启动iperf软件,若启动成功则有如下提示(默认监听5201端口):

    注:错误及解决方法

    问题原因
    Linux系统中找不到libiperf.so.0 库文件,导致执行iperf3 –s时提示缺少相关lib库

    解决方法

    先执行echo $LD_LIBRARY_PATH命令,得到系统LIB库所在位置,如:

    [root@hengda ~]# echo $LD_LIBRARY_PATH
    /usr/lib/oracle/11.2/client64/lib

    再通过find ./ | grep libiperf.so.0查找服务器上是否存在该lib库文件,查询到后拷贝libiperf.so.0库文件到上一步找到的LIB库所在目录下。

    客户端下载iperf windows版软件,下载地址:https://iperf.fr/iperf-download.php

    下载后解压出iperf两个文件,打开cmd命令行窗口,进入该文件解压目录。

     

    1.2. Iperf使用方法

    1.2.1. Tcp上传数据带宽

    执行命令iperf3 -c [serverip] -b 100M -t 20 

    -c代表以客户端方式运行

    -b代表使用100M带宽进行测试,如果馆方为1000M有线网络,也可以使用-b 1000M进行测试。带宽测试需要考虑客户端本机网卡能力、馆方内网能力、出口带宽、公网带宽、服务云接入带宽等。

    -t即为测试20s时间,如果省略该参数则默认测试10s。

    结果上来看,上传带宽为93.8Mb/s,也就是达到了百兆左右。

    这里说明的是,第一个包应为要建立tcp连接,所以传输和带宽都会略低,而第12.00-13.00传输和带宽都有所下降,说明在该秒存在明显的丢包。正常无明显丢包的测试结果应该如下:

     

    1.2.2. Tcp下载数据带宽

    执行命令iperf3 -c [serverip] -b 100M -t 20 -R

    相比下载数据带宽测试多了一个-R参数,意为Reverse,即服务器端发送数据,客户端接收数据。

    1.2.3. UDP上传数据带宽

    执行命令iperf3 -c [serverip] -u -b 100M -t 20

    其中比tcp的上传数据带宽测试命令多一个-u,意为使用udp协议。

     

    1.2.4. UDP下载数据带宽

    执行命令iperf3 -c [serverip] -u -b 100M -t 20 -R

     

     1.2.5. 多并发支持

    执行命令iperf3 -c [serverip] -P 127 -i 20 -t 20

    此处的-P是指启用多线程,127为线程数,范围为1-128,但是使用128则会引起windows端的iperf3程序崩溃,所以最多一台电脑可以模拟127个线程同时连接服务器。观察最后的统计结果,每个线程都有流量,且最后SUM为100M满速即可。

    当然,-R和-u都是可以使用的,但是使用-u只能实现90个线程同时测试,超过90个线程软件最后会出现假死状态。

     

    1.2.6. 稳定性测试

    执行命令iperf3 -c [serverip] -t 3600

    -t是设置时间,3600为持续测试3600s,即1小时。测试思路是可以通过增加时间来评估稳定性,如测试1小时(t的取值范围并未注明,但是10小时是可以的)。当然-P -u -R都是可选的参数。

     

    2. PsTools

    2.1. 软件安装

    无需安装,解压即用。

     

    2.2. 使用方法

    2.2.1. Tcp通讯网络延迟(小包:32、中包1k、大包1M)

    执行命令Psping -w 2 -n 100 -l [packet-size] [serverip:port]

    此命令可以兼顾时延和端口连通性测试。可以通过修改-l后面的参数达到完成小包至大包的测试工作。

     

    2.2.2. UDP通讯网络延迟(小包:32、中包1k、大包1M)

    虽然在帮助信息中有提示使用-u参数可以测试udp的时延,但是经过抓包发现即使使用了-u参数,psping也是发出tcp报文,这应该是psping的一个bug。因而无法使用psping对udp的时延进行测试。

    如果需要测试,则需要自研软件进行。

     

     2.2.3. 协议(端口)可用性

    执行命令psping -q -i 0 [serverip:port]

    由于psping在udp测试上存在的bug,所以只能对tcp的协议进行测试。

    此命令仅能确认某些特定端口的tcp报文是否被馆方网络禁用(如类似文安的客流统计box的视频在公司内部被禁止的情况),但也仅限于端口而未能覆盖应用协议层次。如特定端口的报文被禁用则丢包应为100%。需要确认多少个特殊端口的tcp协议报文则执行多少次即可。

     

    3. 指定文件真实http下载速度

    Windows的批处理应该可以解决,但是我们这边不太会。所以进行了简单的操作。固定下载服务器上某文件(文件大小一致),打印出下载文件的大小,下载开始时间,下载结束时间,需要手动计算。

     

    我这边做了一个批处理文件,原理是将所有需要用的exe放在固定的位置,然后在批处理文件中依次执行上述命令,最后生成记录文件,也即报告,以这个结果文件来评判用户网络的环境。

     

    这个方法目前来看初步应该是勉强够用了,但是在实际测试过程中需要手动修改批处理文件内容,所以还是建议如果可能,可以尝试做个壳子,或请开发会写bat编码的同学重新给编一下具体内容,易用性会强很多。下方附件为初步生成的结果文件,这里面测试过程中使用了几个公司内部的服务器,仅参考示意即可。

  • 相关阅读:
    POJ 2752 Seek the Name, Seek the Fame
    POJ 2406 Power Strings
    KMP 算法总结
    SGU 275 To xor or not to xor
    hihocoder 1196 高斯消元.二
    hihoCoder 1195 高斯消元.一
    UvaLive 5026 Building Roads
    HDU 2196 computer
    Notions of Flow Networks and Flows
    C/C++代码中的笔误
  • 原文地址:https://www.cnblogs.com/ltlinux/p/11027474.html
Copyright © 2011-2022 走看看