`
calmness
  • 浏览: 353346 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

性能测试中带宽的影响

阅读更多
这两天在为进行过调优后的服务器做性能测试,在对其中一个详情页面进行压力测试的时候,测试结果为110TPS,对于这一结果我们是非常不满意,随后又在多个不同的模块下进行测试,结果都非常的相近,然而在压力测试过程当中,服务器的资源消耗非常低,由此我们可以看出,服务器远远未达到压力的极限,而应用程序应该不会有问题,如果是程序问题,服务器资源绝对不会有那么多空闲。

问题到底出在哪里呢?我们web服务器的架构为nginx+lighttpd,于是我们一层层进行单独测试,发现结果仍然是一样,4核的服务器CPU资源损耗仅处于20%左右,我们又对单一的静态页面做压力测试,发现结果仍然是差不多,并没有太大的提升。无论动态还是静态页面,结果都一样,这就更加肯定了我们的结论。排除了应用程序的问题,那问题就应该出在IO那块,再通过磁盘监控,发现磁盘IO的损耗也非常的低,但是我们却有一个意外的发现,多次测试的结果中,网络IO的流量都是处于12M左右。

看到这里,我们心里就豁然开朗了,问题原来是在这里,我们一直都把重心关于于服务器本身的性能调优上,却偏偏忘记了网络带宽的因素,虽然我们测试服务器的网卡是100/1000M网卡,然而我们却是将服务器部署于百兆局域网内,而100M带宽的实际传输速度刚好是介于12M左右,由于我们终于发现瓶颈是在于网络带宽,而非是服务器本身的性能上。于是二话不说,我们立刻将所有的测试服务器以及客户机都连接在同一千兆网内,尽可能降低网络带宽的限制。

成功搭建好环境之后,再进行测试,结果果然如我们所料,静态页面的测试中,最快的模块测试达到了600TPS上线,而此时的网卡流量已经达到了50M左右,而由于多个模块的页面大小并不相同,TPS的结果也各不相同,但是网卡的流量却都处于50M上下,然而1000M网的理论速度是可以达到120M左右,50M的实际速度远远未到此数,也许达不到理论速度,但是相差应该也不会太多,于是我们尝试从两台服务器之间互相copy大文件测试一下实际速度有多少,而最终的结果也是和我们测试web服务器的结果一样,也是在50M上下,因此又一次证明了IO是一个瓶颈,只是还无法确定是磁盘IO还是网络IO,由于时间比较紧,我们就并未在此问题上多做纠缠,因为这只是对静态页面的测试,实际运行过程当中,真正的瓶颈应该是在应用上,因此我们再次将重心转移到动态页面的请求上。

再一次对动态页面进行压力测试,这次我们对各个模块测出的平均结果处于200TPS上下,而网络流量仅仅处于30M左右,此时服务器的资源占用率已经处于80-90%之间,基本已经是处于满负荷状态,纯动态页面200TPS,不算高,程序本身还有很大优化的空间,不过五一过后就要正式上线,此时再进行优化已经来不及,不过对于纯动态请求200TPS的结果,其实我已经相对满意了,因为考虑到实际应用场景,在最有可能出现峰值的情况下,实际大部分用户只会访问比较少数相同的页面,而我们对于同一页面的请求都进行了静态化的处理,实际上除了第一次请求外,其他的请求都是直接访问静态页面,因此实际能承受的压力远远不止于此。

最后,我们针对实际应用场景,通过loadrunner模拟真实访问情景,结合所有的测试对系统进行综合的测试,对各种情况进行百分比设定,尽量模拟真实情况,测试的结果处于400-500TPS,而网络流量也到了之前测试的上限值,再考虑到实际情况中,客户端对静态资源还会进行缓存,应该还会有相对大的提升,本次的结果相对真实,而我也比较满意,在下一版本中,应该会针对应用程序再次进行优化,相信还会得到一个不小的提升。

最后,在此对TPS进行一下解释(摘自网上的解释,懒得自己写了,我是个懒人):
TPS是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息来估计得分。客户机使用加权协函数平均方法来计算客户机的得分,测试软件就是利用客户机的这些信息使用加权协函数平均方法来计算服务器端的整体TPS得分。

注:Loadrunner中还有很多其他的评测参数,不过我个人认为TPS更具代表性,因此只在此用TPS作为评核依据。
3
0
分享到:
评论
1 楼 ixu 2009-07-24  
Loadrunner的“吞吐量(每秒字节数)”也是重要指标,看这个或许一开始你就能发现网络已到瓶颈。不光看TPS,综合考虑这个,更能全面反映系统的处理能力。

相关推荐

    linux DDR带宽测试工具

    2. `hdparm`: 尽管主要是用于硬盘性能测试,`hdparm`也能用于内存带宽测试,通过`-t`选项进行突发读取速度测试。 3. `dd`: `dd`是一个基础的文件复制工具,但通过特定的命令行参数,可以用于简单的内存带宽测试。 4....

    HPC高性能计算项目Stream内存带宽测试报告.docx

    本文档主要介绍了HPC高性能计算项目Stream内存带宽测试报告,旨在探讨数组大小、CPU主频、编译器、线程绑定、线程数等因素对Stream内存带宽测试的影响。 数组大小的影响 数组大小对Stream内存带宽测试的影响是...

    udp测试瓶颈带宽

    总的来说,这个话题涵盖了网络性能测试的基础知识,涉及Linux系统操作、UDP协议特性以及网络带宽计算方法。通过实际操作和分析结果,不仅可以了解网络的传输能力,也能为网络优化提供参考依据。

    处理器内存带宽测试工具

    在计算机科学和硬件领域,内存带宽是衡量CPU与内存间数据交换速度的关键指标,它直接影响到系统的整体性能。MBW,全称为Memory Bandwidth Benchmark,是一款常用的内存带宽测试工具,专门用于测量DDR类型的存储器...

    用java做的测试服务器带宽项目(原创)

    综上所述,这个"用java做的测试服务器带宽项目"涵盖了Java网络编程、TCP/IP通信、多线程、异常处理、定时任务、结果展示等多个核心知识点,是一个全面的网络性能测试工具。对于学习和理解Java在网络应用中的实际运用...

    C++ 网络带宽测试源码

    在带宽测试中,libevt通过监听网络事件,实现实时的数据发送和接收,以便准确测量带宽性能。 **二、带宽测试原理** 网络带宽测试通常分为上行和下行两部分。上行带宽是指本地设备向网络发送数据的能力,而下行带宽...

    网络带宽测试工具

    网络带宽测试工具是计算机网络领域中不可或缺的诊断与优化工具,主要用来测量网络连接的带宽、延迟以及数据传输的稳定性。对于嵌入式系统尤其是网口开发来说,了解网络性能至关重要,因为这直接影响到设备的数据处理...

    网络工具带宽测试

    iperf是一款开源的网络性能测试工具,适用于Linux、Windows和macOS等多种操作系统。它可以通过TCP或UDP协议进行带宽测试,支持多线程,能够灵活地调整数据包大小和传输速率,从而提供详尽的网络性能分析报告。 在...

    SZTOOL深圳带宽查询检测软件,测试带宽,检测带宽必备软件

    1. **在线测试**:除了使用SZTOOL这样的本地应用外,还可以通过网络上的带宽测试网站进行测试,但这种方式可能会受到服务器、网络路径等因素的影响。 2. **第三方工具**:市面上还有其他类似工具,如SpeedTest、...

    测试代理性能,测试网络带宽,proxy,socket

    总结起来,本文介绍了如何使用Python进行代理性能测试和网络带宽评估,以及Socket在网络通信中的作用。代理性能测试关注响应时间、并发处理能力、错误率和可用性,而网络带宽测试则关注数据传输速率。理解这些概念和...

    06+性能测试报告模板

    网络带宽是指性能测试中的网络带宽配置,包括网络结构、带宽大小等。这个部分需要根据业务系统的特点和性能测试的目的来确定。 测试约定 测试约定是指性能测试中的约定,包括测试时间、测试频率、测试场景等。这个...

    iperf带宽测试工具

    iperf是一款广泛使用的网络性能测试工具,主要用于评估和测量网络的带宽容量、吞吐量以及网络延迟。它的工作原理是通过在两台计算机之间发送数据包,然后分析传输速率和丢包率,从而得出网络连接的质量和效率。iperf...

    局域网带宽测试工具

    4. **性能测试**:定期进行带宽测试,生成性能报告,帮助用户跟踪网络性能的变化趋势。 5. **协议分析**:可能包含TCP/IP协议分析功能,检查TCP/IP协议栈的工作状态,查找可能存在的通信问题。 6. **皮肤支持**:...

    iperf2打流脚本可以编辑脚本进行网络性能测速,测试最大带宽

    iperf 是一个强大的网络性能测试工具,主要用于评估和测量网络的带宽、延迟以及数据传输的稳定性。在本文中,我们将深入探讨如何使用iperf2进行网络性能测速,以及如何通过编写脚本来定制测试参数,以达到测试最大...

    内存带宽测试工具 stream.tar

    STREAM是一套综合性能测试程序集,通过fortran和C两种高级且高效的语言编写完成,由于这两种语言在数学计算方面的高效率, 使得 STREAM 测试例程可以充分发挥出内存的能力。 STREAM 测试得到的是可持续运行的内存...

    内存带宽性能工具STREAM服务器性能测试利器_之二_.pdf

    内存带宽性能工具STREAM服务器性能测试利器之二_ STREAM是一款内存带宽性能测试工具,主要用于测试服务器的内存带宽性能。该工具可以帮助用户快速地评估服务器的内存带宽性能,从而优化服务器的性能。 在使用...

    带宽测试软件.rar

    带宽测试软件是一种用于评估网络连接速度和稳定性的工具,它可以测量上传和下载的速度,帮助用户了解自己的网络性能。在互联网使用中,带宽是衡量数据传输速率的重要指标,高带宽意味着能更快地传输数据,低带宽则...

    VC++ 网卡带宽的测试工具

    在LanRateTest V1.91这个压缩包中,可能就包含了这样的一个工具,它使用VC++实现了上述流程,帮助用户快速检测其网络接口的带宽性能。用户只需运行程序,它就会自动完成上述步骤,并给出网卡的当前带宽状态。 总结...

Global site tag (gtag.js) - Google Analytics