这两天在为进行过调优后的服务器做性能测试,在对其中一个详情页面进行压力测试的时候,测试结果为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作为评核依据。
分享到:
相关推荐
HPC高性能计算项目Stream内存带宽测试报告.docx
性能测试的概念是什么,基本目的是什么,我想大家都基本清楚,不作详述,总之,性能测试只是测试过程中的一种方式,帮助我们的功能更好的运行,如果功能测试是可用,易用,满足需求、用户使用为目的,性能测试无非...
测试代理性能,测试网络带宽,proxy,socket
第一部分,测试执行 先看一图,再看下文 这个当然就是压力过程中带宽的使用率了,我们的带宽是1Gbps的,合计传输速率为128MB/s,也正因为这个就让我越来越疑惑了,不过通过压力过程中的各项数据我又不得不...
性能测试面试题精选(含答案) 性能测试面试题精选(含答案第一篇) 1) 什么是性能测试? 答案:系统在一定的压力情况下,查看cpu,内存,磁盘,网络带宽,TPS、响应时间、并发用户数、等各项指标,通过模拟生产...
内存带宽性能工具STREAM服务器性能测试利器_之二_.pdf
吞吐率测试工具——Qcheck 组播流测试工具——mcast 超限组播测试工具——MCastTest SolarWinds 带宽测试——Ping Plotter Freeware 测量无线网带宽——IxChariot
近期在做一个项目的性能测试时,在打压时发现压力达到100hps后就一直打不上去,同时还会报读redis服务器超时的错误。查看了下打压服务器的cpu和内存占用,没有发现什么异常。 近期在做一个项目的性能测试时,在...
NetIQ Chariot是一款功能强大的网络流量监控和测试软件,通过该软件,用户可以有效的对网络效果、设备性能、应用程序性能等进行检测,有效的为网站运行状况进行评估,后改善网络运行速度、提升网络效果等非常有用,...
要评价一个系统的性能,通常有不同的指标,相应的会有不同的测试方法和测试工具。既有比较成熟的商业测试软件,也有许多优秀的开源工具来完成这个任务。本文简要介绍如何使用lmbench来完成系统综合性能测试。&nbs
它是 Iperf 的图形界面前端,Iperf 是一个常用的网络性能测试工具,用于测量 TCP 和 UDP 带宽性能。 Jperf 提供了一个用户友好的图形界面,使得网络性能测试变得更加直观和容易。通过 Jperf,用户可以设置不同的...
3、测试游戏正常运行所需要的最低网络带宽数值,并且考虑电信与网通互访的问题(如果采用分线路服务器另说) 4、数据库考虑表是否建立的足够细分了,是否符合范式,是否按照数据库的建模语言来做得数据库架构 5...
”,这真不好说,因为手里确实没有测试数据。更何况,IOPS与i/o size、random/sequential、read/write ratio、App threading-model、response time baseline等诸多因素相关,这些因素组合起来便可以描述一种类型的I/...
1
介绍几款网络性能测试工具。涉及吞吐量、组播流、带宽等的测试。
iperf3 是一个款常见的网络带宽测试工具,能够进行网络吞吐量的测试,也能客观的测试出网络的转发速率,做为一款网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,...
Iperf是一个网络性能测试工具,Iperf可以测试最大TCP和UDP带宽性能,Iperf具有多种参数和UDP特性,可以根据需要调整,Iperf可以报告带宽,延迟抖动和数据包丢失. 源自国外,利用BAT将软件简化了一下,无技术含量,只是为了拿...
在当前生产环境下,对xx系统进行单交易基准测试、单交易负载测试、混合交易负载测试、稳定性测试、异常测试、带宽容量测试,系统最大的并发用户量,发现性能瓶颈并协助进行解决,并给出生产环境上线的用户量与环境...
开源类程序, Thanks to Mark Gates (NLANR), Alex Warshavsky (NLANR) and Justin Pietsch (University of Washington) who were responsible for the 1.1.x releases of Iperf. For this release, we would like to...