漫天飞花 發表於 2019-6-15 14:22:00

测试linux服务器带宽

<h2><span style="font-family: 宋体"><strong>测试准备</strong></span></h2>
<h3><span style="font-family: 宋体">1.&nbsp;<strong>计划考量参数</strong></span></h3>
<p><span style="font-family: 宋体">&nbsp;TCP上传数据带宽</span></p>
<p><span style="font-family: 宋体">&nbsp;TCP下载数据带宽</span></p>
<p><span style="font-family: 宋体">&nbsp;UDP上传带宽</span></p>
<p><span style="font-family: 宋体">&nbsp;UDP下载带宽</span></p>
<p><span style="font-family: 宋体">&nbsp;多并发支持</span></p>
<p><span style="font-family: 宋体">&nbsp;稳定性</span></p>
<p><span style="font-family: 宋体">&nbsp;Tcp通讯网络延迟(小包:32、中包1k、大包1M)</span></p>
<p><span style="font-family: 宋体">&nbsp;UDP通讯网络延迟(小包:32、中包1k、大包1M)</span></p>
<p><span style="font-family: 宋体">&nbsp;协议可用性</span></p>
<p><span style="font-family: 宋体">&nbsp;指定文件真实http下载速度</span></p>
<h3><span style="font-family: 宋体">2.&nbsp;<strong>使用的软件</strong></span></h3>
<p><span style="font-family: 宋体">&nbsp;Iperf:可完成考量参数1-6</span></p>
<p><span style="font-family: 宋体">&nbsp;Pstools:可完成考量参数7-8</span></p>
<p><span style="font-family: 宋体">&nbsp;其余软件:完成考量参数9-10</span></p>
<h2><span style="font-family: 宋体"><strong>测试执行</strong></span></h2>
<h3><span style="font-family: 宋体">1.&nbsp;<strong>Iperf</strong></span></h3>
<h4><span style="font-family: 宋体">1.1.&nbsp;<strong>安装软件</strong></span></h4>
<p><span style="font-family: 宋体"><strong>服务器端(Centos)执行如下命令</strong>:</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:bash;gutter:true;"><span style="font-family: 宋体">wget http://downloads.es.net/pub/iperf/iperf-3.0.6.tar.gz</span></pre>
</div>
<p><span style="font-family: 宋体"><strong>下载完成后进行解压</strong>:</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:bash;gutter:true;"><span style="font-family: 宋体">tar zxvf iperf-3.0.6.tar.gz</span></pre>
</div>
<p><span style="font-family: 宋体"><strong>进入解压后的程序目录,执行以下命令</strong>:</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:bash;gutter:true;"><span style="font-family: 宋体">./configure &amp;&amp; make &amp;&amp; make install</span><br><span style="font-family: 宋体">Iperf3 -s</span></pre>
</div>
<p><span style="font-family: 宋体">其中“iperf3 -s”命令为以服务器模式启动iperf软件,若启动成功则有如下提示(默认监听5201端口):</span></p>
<p><span style="font-family: 宋体"><strong>注:错误及解决方法</strong>:</span></p>
<p><span style="font-family: 宋体"><strong>问题原因</strong>:</span><br><span style="font-family: 宋体">Linux系统中找不到libiperf.so.0 库文件,导致执行iperf3 –s时提示缺少相关lib库</span></p>
<p><span style="font-family: 宋体"><strong>解决方法</strong>:</span></p>
<p><span style="font-family: 宋体">先执行echo $LD_LIBRARY_PATH命令,得到系统LIB库所在位置,如:</span></p>
<div class="cnblogs_Highlighter">
<pre class="brush:bash;gutter:true;"># echo $LD_LIBRARY_PATH
/usr/lib/oracle/11.2/client64/lib</pre>
</div>
<p><span style="font-family: 宋体">再通过find ./ | grep libiperf.so.0查找服务器上是否存在该lib库文件,查询到后拷贝libiperf.so.0库文件到上一步找到的LIB库所在目录下。</span></p>
<p><span style="font-family: 宋体">客户端下载iperf windows版软件,下载地址:https://iperf.fr/iperf-download.php</span></p>
<p><span style="font-family: 宋体">下载后解压出iperf两个文件,打开cmd命令行窗口,进入该文件解压目录。</span></p>
<p><span style="font-family: 宋体">&nbsp;</span></p>
<h3><span style="font-family: 宋体">1.2.&nbsp;<strong>Iperf使用方法</strong></span></h3>
<h4><span style="font-family: 宋体">1.2.1.&nbsp;<strong>Tcp上传数据带宽</strong></span></h4>
<p><span style="font-family: 宋体">执行命令iperf3 -c -b 100M -t 20&nbsp;</span></p>
<p><span style="font-family: 宋体"><img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615141910121-1154584631.png" alt=""></span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">-c代表以客户端方式运行</span></p>
<p><span style="font-family: 宋体">-b代表使用100M带宽进行测试,如果馆方为1000M有线网络,也可以使用-b 1000M进行测试。带宽测试需要考虑客户端本机网卡能力、馆方内网能力、出口带宽、公网带宽、服务云接入带宽等。</span></p>
<p><span style="font-family: 宋体">-t即为测试20s时间,如果省略该参数则默认测试10s。</span></p>
<p><span style="font-family: 宋体">结果上来看,上传带宽为93.8Mb/s,也就是达到了百兆左右。</span></p>
<p><span style="font-family: 宋体">这里说明的是,第一个包应为要建立tcp连接,所以传输和带宽都会略低,而第12.00-13.00传输和带宽都有所下降,说明在该秒存在明显的丢包。正常无明显丢包的测试结果应该如下:</span></p>
<p><span style="font-family: 宋体">&nbsp;<img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615141924270-1856530007.png" alt=""></span></p>
<p>&nbsp;</p>
<h4><span style="font-family: 宋体">1.2.2.&nbsp;<strong>Tcp下载数据带宽</strong></span></h4>
<p><span style="font-family: 宋体">执行命令iperf3 -c -b 100M -t 20 -R</span></p>
<p><span style="font-family: 宋体">相比下载数据带宽测试多了一个-R参数,意为Reverse,即服务器端发送数据,客户端接收数据。</span></p>
<p><img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615142015728-2142820171.png" alt=""></p>
<p>&nbsp;</p>
<h4><span style="font-family: 宋体">1.2.3.&nbsp;<strong>UDP上传数据带宽</strong></span></h4>
<p><span style="font-family: 宋体">执行命令iperf3 -c -u -b 100M -t 20 </span></p>
<p><span style="font-family: 宋体">其中比tcp的上传数据带宽测试命令多一个-u,意为使用udp协议。</span></p>
<p><span style="font-family: 宋体">&nbsp;<img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615142031895-1957167183.png" alt=""></span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4><span style="font-family: 宋体">1.2.4.&nbsp;<strong>UDP下载数据带宽</strong></span></h4>
<p><span style="font-family: 宋体">执行命令iperf3 -c -u -b 100M -t 20 -R</span></p>
<p><span style="font-family: 宋体">&nbsp;<img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615142040351-1395815789.png" alt=""></span></p>
<p>&nbsp;</p>
<h4><strong><span style="font-family: 宋体">&nbsp;1.2.5.&nbsp;多并发支持</span></strong></h4>
<p><span style="font-family: 宋体">执行命令iperf3 -c -P 127 -i 20 -t 20</span></p>
<p><span style="font-family: 宋体">此处的-P是指启用多线程,127为线程数,范围为1-128,但是使用128则会引起windows端的iperf3程序崩溃,所以最多一台电脑可以模拟127个线程同时连接服务器。观察最后的统计结果,每个线程都有流量,且最后SUM为100M满速即可。</span></p>
<p><span style="font-family: 宋体">当然,-R和-u都是可以使用的,但是使用-u只能实现90个线程同时测试,超过90个线程软件最后会出现假死状态。</span></p>
<p><span style="font-family: 宋体">&nbsp;<img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615142049236-1170304594.png" alt=""></span></p>
<p>&nbsp;</p>
<h4><span style="font-family: 宋体">1.2.6.&nbsp;<strong>稳定性测试</strong></span></h4>
<p><span style="font-family: 宋体">执行命令iperf3 -c -t 3600</span></p>
<p><span style="font-family: 宋体">-t是设置时间,3600为持续测试3600s,即1小时。测试思路是可以通过增加时间来评估稳定性,如测试1小时(t的取值范围并未注明,但是10小时是可以的)。当然-P -u -R都是可选的参数。</span></p>
<p><span style="font-family: 宋体">&nbsp;</span></p>
<h3><span style="font-family: 宋体">2.&nbsp;<strong>PsTools</strong></span></h3>
<h4><span style="font-family: 宋体">2.1.&nbsp;<strong>软件安装</strong></span></h4>
<p><span style="font-family: 宋体">无需安装,解压即用。</span></p>
<p><span style="font-family: 宋体">&nbsp;</span></p>
<h4><span style="font-family: 宋体">2.2.&nbsp;<strong>使用方法</strong></span></h4>
<h5><span style="font-size: 14px; font-family: 宋体">2.2.1.&nbsp;<strong>Tcp通讯网络延迟(小包:32、中包1k、大包1M)</strong></span></h5>
<p><span style="font-family: 宋体">执行命令Psping -w 2 -n 100 -l </span></p>
<p><span style="font-family: 宋体">此命令可以兼顾时延和端口连通性测试。可以通过修改-l后面的参数达到完成小包至大包的测试工作。</span></p>
<p><span style="font-family: 宋体">&nbsp;<img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615141719820-1908232139.png" alt=""></span></p>
<h5><span style="font-size: 14px; font-family: 宋体">2.2.2.&nbsp;<strong>UDP通讯网络延迟(小包:32、中包1k、大包1M)</strong></span></h5>
<p><span style="font-family: 宋体">虽然在帮助信息中有提示使用-u参数可以测试udp的时延,但是经过抓包发现即使使用了-u参数,psping也是发出tcp报文,这应该是psping的一个bug。因而无法使用psping对udp的时延进行测试。</span></p>
<p><span style="font-family: 宋体">如果需要测试,则需要自研软件进行。</span></p>
<p><span style="font-family: 宋体">&nbsp;</span></p>
<h5><span style="font-size: 14px; font-family: 宋体">&nbsp;2.2.3.&nbsp;<strong>协议(端口)可用性</strong></span></h5>
<p><span style="font-family: 宋体">执行命令psping -q -i 0 </span></p>
<p><span style="font-family: 宋体">由于psping在udp测试上存在的bug,所以只能对tcp的协议进行测试。</span></p>
<p><span style="font-family: 宋体">此命令仅能确认某些特定端口的tcp报文是否被馆方网络禁用(如类似文安的客流统计box的视频在公司内部被禁止的情况),但也仅限于端口而未能覆盖应用协议层次。如特定端口的报文被禁用则丢包应为100%。需要确认多少个特殊端口的tcp协议报文则执行多少次即可。</span></p>
<p><span style="font-family: 宋体">&nbsp;<img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615141649521-156887997.png" alt=""></span></p>
<h3><span style="font-family: 宋体">3.&nbsp;<strong>指定文件真实http下载速度</strong></span></h3>
<p><span style="font-family: 宋体">Windows的批处理应该可以解决,但是我们这边不太会。所以进行了简单的操作。固定下载服务器上某文件(文件大小一致),打印出下载文件的大小,下载开始时间,下载结束时间,需要手动计算。</span></p>
<p><span style="font-family: 宋体">&nbsp;<img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615141603137-22342132.png" alt=""></span></p>
<p><span style="font-family: 宋体">我这边做了一个批处理文件,原理是将所有需要用的exe放在固定的位置,然后在批处理文件中依次执行上述命令,最后生成记录文件,也即报告,以这个结果文件来评判用户网络的环境。</span></p>
<p><span style="font-family: 宋体">&nbsp;<img src="https://img2018.cnblogs.com/blog/1449293/201906/1449293-20190615141618052-2048805344.png" alt=""></span></p>
<p>&nbsp;</p>
<p><span style="font-family: 宋体">这个方法目前来看初步应该是勉强够用了,但是在实际测试过程中需要手动修改批处理文件内容,所以还是建议如果可能,可以尝试做个壳子,或请开发会写bat编码的同学重新给编一下具体内容,易用性会强很多。下方附件为初步生成的结果文件,这里面测试过程中使用了几个公司内部的服务器,仅参考示意即可。</span></p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/ltlinux/p/11027474.html
頁: [1]
查看完整版本: 测试linux服务器带宽