性能测试:深入理解并发量,线程数,吞吐量,TPS

并发数,线程数,吞吐量,每秒事务数(TPS)都是性能测试领域非常关键的数据和指标。

那么他们之间究竟是怎样的一个对应关系和内在联系?

测试时,我们经常容易将线程数等同于表述为并发数,这一表述正确吗?

本文就将对性能领域的这些关键概念做一次探讨。

文章可能会比较长,希望您保持耐心看完。

1. 走进开封菜,了解性能

①老王开了家餐厅

我们的主角老王

,在M市投资新开业了一家,前来用餐的顾客络绎不绝:

餐厅里有4种不同身份的人员:

 

用户一次完整的用餐流程如下:

顾客到店小二处付款点餐 => 小二将订单转发给后厨 => 后厨与备菜工配合,取材完成烹饪后交给小二 => 小二上菜,顾客用餐。

假设所有顾客都不堂食而是打包带走,也就是不考虑用户用餐时间。餐厅完成一次订单的时间是多久?

订单时间 = 顾客点单时间 + 前台接收转发时间 + 后厨取材烹饪时间 + 后厨交给服务员,服务员上菜时间。

说白了就是每个流程的耗时相加。

假设以上时间分别为1,1,5,1(分钟),那么一次订单的完成时间就是8分钟。

  

②问题来了

餐厅当然不可能只有一个人就餐,否则老王不要带着小姨子跑路。

所以我们接下来看多人就餐的情况。

假设同一时间点上有两人

就餐,会发生什么情况?

第一位用户与第一个场景一样,仍然是点单-下单-烹饪-上菜,8分钟后第一位顾客拿着打包的食物离开。

第二位用户则有所不同了。假设小二,厨师,备菜都只有一人,而且他们每个人同时只能处理一件事情。

那么第二位用户首先需要在点餐时等待小二1分钟,而后厨师烹饪第一位用户的菜时,没有任何人在为他服务。

我们来梳理一下这个过程中,每一分钟都发生了什么事情:

 

可以看到,两个顾客完成订单的总时长是13分钟。

继续推算我们发现,每增加一人总时长增加5分钟。

在当前的人员配置下,顾客越多,后来的顾客等待时间就越长。

③这还不是高峰期

如果餐厅在高峰时段只有两人用餐,那估计老王还得带着小姨子跑路。

实际一个运营得当的开封菜餐厅,在用餐高峰时段的顾客数可能高达百人。

那么问题来了,在某个普通工作日,12:00午饭时间,带着各种工牌的IT男女顾客蜂拥而至,餐厅瞬间挤进来一百人。

这个时候会发生什么?

现在餐厅已经完全服务不过来了,后续的顾客等的时间越来越长,最后一位可怜的顾客要等到差不多晚上8点才能吃到饭。

这显然是不可能的,实际上等了不到半个小时吃不上饭的顾客就都要走光了。

老王开始考虑如何应对营业高峰期的情况。

经过上面的分析,老王发现,增加各岗位人手无疑是最直观的解决办法!

我们可以计算一下人手增加的情况。假设把所有人员增加为2人配置:

  

那么很简单,2人就餐的情况下,由于所有人员并行服务,就餐的两名顾客可以同一时间点餐,等待烹饪,上菜后打包走人。

而后来的客人可以看作两条并行的线,那么100顾客的用餐时间就很自然的减半了。

看到这里,终于出现“并行”的概念了。

  

④继续调优

通过double人员配置,老王成功的使得用餐高峰期的服务能力提高了一倍,但这还不够。这种情况下,服务100顾客仍需差不多4个小时。

老王再次思考整个服务团队的配置和各环节处理能力,他发现,其瓶颈就在于“后厨”。顾客的等待时间,大部分都是在等待烹饪。

那么增加后厨能力就是重中之重,老王继续做了一系列措施:

  • 再次double大厨人数,现在厨师们四个人同时并行做菜。
  • 让备菜员提前将热门食材准备好。
  • 聘请更有经验的大厨,每个餐品烹饪时间更快,加上提前备菜,整个配餐时间缩短到2分钟。
  • 将点餐的过程改为使用手机小程序下单,让小二专注于上菜。

整个团队配置变为:

 如此配置之下,这家开封菜终于可以在1小时之内就完成对100人顾客的就餐服务了!

2. 这并不是一篇餐饮管理文章

再继续讨论餐厅的服务能力调优,这可能就要变成一片餐饮博文了。

不过相信敏锐的你能看出来,第一部分我们的讨论里,包含了大量与服务器性能相似的概念。

恰好,老王

除了开了一家开封菜餐厅,还运营着一家网站=_=!。

这家网站的一次典型事务请求链路是这样的:

你别说,还真挺像用餐流程的吧。

而且就像多人用餐的场景一样,这个网站同样也有多用户请求的情况:

当一条请求从客户端发起时,它遵循着以上的线路传递,线性完成。

老王发现,这家网站的性能关键,在于应用服务器上。就像餐厅的服务能力,主要取决于后厨团队一样。

多个客户端同时发起请求时,服务器必须具备一定的“并行”能力,否则后续进来请求会排队而且可能超时。

说到这呢,虽然上图我们画的是一个

,但一般都服务器的都有多处理器,辅以超线程技术。

而主流编程语言都有“多线程编程”的概念,其目的就在于合理的调度任务,将CPU的所有处理器充分的利用起来。

也就是说我们可以认为,这套应用服务本身就有不止一个“大厨”在烹饪。

取决于处理器数和多线程技术,数个事务可以以线程

的方式并行处理。

不过老王对于当前服务器的性能并不满意,就像对于餐厅一样,老王也针对这个应用服务思考了更多调优方案:

  • 大厨的数量真的够吗?是不是要继续增加人数(CPU核数,服务器节点数-硬件调优)?
  • 大厨的经验和技术到位吗?是不是要改聘更资深的大厨(改换具有更高频CPU的服务器-硬件调优;调整业务逻辑效率-逻辑调优)?
  • 改良热门餐品的备菜策略?(利用数据库索引、缓存等技术-逻辑调优)

除了我们强调的调优重点,应用服务/后厨团队,其他部分也是有可能成为瓶颈,需要调优解决的,比如:

  • 餐厅容量会不会无法容纳排队的客户?(服务器容量,线程池大小,最大连接数,内存空间)
  • 小二的下单和上菜速度有没有成为掣肘?(网络带宽,路由效率等。对于数据密集型服务而言,网络带宽很可能成为瓶颈。)
  • 等等

  

3. 下面是性能测试环节

接下来我们要讨论如何测试一套服务的性能。

线程数:

要实现性能测试的一个必要条件,那就是我们必须要能模拟高峰期的访问量。这一点通过正常的应用客户端是很难办到的(比如web应用的客户端就是浏览器,你很难用浏览器并发向服务器发送大量请求)。

这里就需要性能测试工具来帮忙了,主流的性能测试工具比如

,等都能以线程式并发的方式,帮我们达成“短时间内向服务器发送大量请求”这一任务。

多线程式并发测试工具,顾名思义,会启动复数个线程,让每个线程独立向服务器端发出请求。

有时候我们在描述性能测试过程时,会将这个客户端的独立线程数表述为“并发数”。

但是注意,这里的“并发”指的是客户端并发,很简单,客户端能发出很多请求,服务器却未必能处理得了是不是?

并行数:

那么服务器一次性能同时处理多少事务请求呢?

根据我们之前的讨论,同一时间节点上同时处理的事务数最大就是:CPU处理器数*服务器超线程倍率。

比如对于一个8核未超线程CPU,某时间节点上的同时处理的事务不会超过8个。类比于8个厨师,同一时间点上只能处理8份餐品。

而超线程技术就像是给厨师们来了一场“左右互搏”培训,让每个人都能一心二用,一次处理2份餐品。

这里我们描述的“同时8个”事务,就是“并行/平行”的含义。

并发数:

注意上面我们讨论的“并行数”,不是"并发数"。否则我们直接看CPU核数就能确定并发数了。

并发数指的是一个时间段内

的事务完成数。这个切片“时间段”常取1秒钟或1分钟这样的整数来做换算。

假设一个厨师平均2分钟做完一道菜,那么8个厨师2分钟完成8道菜,换算一下就是4道/分钟。

如果以分钟为单位进行统计,那么这个数字就是最终结果。

每秒事务数(TPS):

一般应用服务器的处理速度跟厨师做菜是不在一个数量级的,常见的事务请求在应用服务器端的处理时间以毫秒为单位计算。

所以测试性能时,我们更常用“1秒钟”来作为切片时间段。

一秒钟完成多少个事务请求,这个数据就是我们耳熟能详的“每秒事务数”。

这个指标翻译成英文就是TPS - Transaction Per Seconds。(也有用QPS - Query Per Seconds来统计的,其差异暂时不做讨论了)

每秒事务数,就是衡量服务器性能的最重要也是最直观指标。

每秒能完成的事务数越多,那么每分钟能完成的事务就越多,每天完成的事务数就越多 -- 

简单的小学数学。

那么他直接能影响到一个应用服务每天平均能承受的访问量/请求量,以及业务高峰期能承受的压力。

平均响应时间:

那么有哪些因素会影响到TPS数值?

有两个主要的维度:

  • 单个事务响应速度
  • 同一时间能并行执行的事务

第二点我们说了,它主要跟服务器资源配置,线程池容量,线程调度等相关。

第一点换一个说法就是:事务平均响应时间。单个事务平均下来完成的速度越快,那么单位时间内能完成的事务数就越多,TPS就越高 -- 

简单的小学数学。

所以在进行性能调优时,除了服务器容量资源,单个事务响应速度是另一个关注的重点。

要关注事务响应速度/时间,可以考虑在事务内部逻辑节点添加“耗时探针”的方式,来探测每个步骤分别花费的时间,从而找出可优化的部分。

吞吐量

吞吐量

是在性能探测过程中经常冒出来的名词,怎么理解他呢?

简单的结论就是,吞吐量是站在“量”的角度去度量,是一个参考指标。

但是光有“量”的数据有时候并无太大价值,一家餐厅1个小时卖出100份餐品和一个月才卖出100份餐品,单从“量”的维度衡量肯定不行,时间维度很重要!

所以,性能测试领域的吞吐量通常会结合上时间维度进行统计。

如果吞吐量的“量”以“事务”为统计单位的话,结合时间维度,转化以后可以很容换算成TPS

4. 最后,关于性能测试的一些碎碎念

测试类型

由于测试目标的不同,性能测试可能存在很多种形式。

比如明确了解日访问量和巅峰访问量,测试服务器是否能够承受响应压力的测试。

比如用于探测系统负载极限和性能拐点的测试。

比如衡量系统在高负载情况下,长时间运行是否稳定的测试。

这许多种形式我们暂且不做讨论,不过所有以上测试的基础都是它 -- “并发测试”。

制造并发,是性能测试的基本实现办法。

进一步细化理解客户端线程数和并发量的关系

设服务器并发能力为每秒完成1个事务,即TPS=1/s。且服务器使用单核处理器,现用Jmeter启动5个线程循环进行并发测试,那么每个切片时间(每秒)都发生了什么?

我们可以用如下图表来分析:

其中,

为线程可执行(等待执行),为线程正在执行,表示线程执行完毕。

假设其他条件不变,增加服务器并行处理数为2(增加CPU核数为2,以及合理的线程调度机制)那么变为:

这里真实的并发数(服务器单位时间完成的事务数)就是图中每一秒钟完成的事务数。

而客户端启动的其他未处理的线程则在“排队等待”。

线程并发数量

那么制造多少并发,换言之,我应该用多少并发线程数去进行测试?

实际上客户端发起的线程数与服务器可达到的并发数并无直接关系,但你应该使用足够的线程数,让服务器达到事务饱和。

如何判断服务器是否达到饱和?这时我们可以采取阶梯增压

的方式,不断加大客户端线程数量,直到服务器处理不过来,事务频繁超时,这时就得到了服务器处理能力极限。

根据不同的测试类型,取这个极限数量的一定百分比作为客户端线程数。

比如说,负载测试中,通常取达到这个极限数值的70%。

客户端损耗

我们在讨论餐厅订单流程和服务器事务流程时,流程图里包括了顾客/客户端。

顾客点餐要不要花时间?当然要,如果他患上选择困难症,甚至有可能在下单的时候花去大量时间。

同理,客户端从启动线程到构造请求并发出,这一过程也有一定的时间损耗。

通常在测试服务器性能的时候,客户端性能是应该被剥离出去的,所以测试时应该尽量降低客户端时间损耗。

  • 适当增加客户端线程循环次数 - 稀释这些线程启动的占用时间
  • 当客户端线程数需要较大数量时(对jmeter而言,超过1000左右),客户机/测试机的资源占用会增大,整个客户端的请求构造时间会拉长。应该考虑分布式测试。
  • 尽量减少客户端请求构造时间,比如beanshell请求加密,如果过程过于复杂也会耗去可观时间。极限测试情况下应考虑简化。

那么本文到这里告一段落。

希望能帮助理解性能测试领域的这些关键概念和原理。

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

 

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
从35个方面对Jmeter从原理到实际演示,一册在手,天下我有 1.性能测试基本概念 1.1.RT -Response time 请求响应时间 从客户端发出请求到得到响应的整个时间 一般包括网络响应时间+server的响应时间。 用户接受准则: 例如2-5-10原则,即按照正常用户体验,如果用户能够在2秒内得到响应,会感觉速度很快,如果2-5秒得到响应,用户感觉系统的响应速度还不多,在5-10秒之内得到响应时,用户会感觉系统的响应速度慢,但是可以接受,超过10秒后还没有响应,用户就会感觉不能够接受。 不同行业不同业务可接受的响应时间是不同的,一般情况,对于在线实时交易: 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。 金融企业:1秒以下为佳,部分复杂业务3秒以下。 保险企业:3秒以下为佳。 制造业:5秒以下为佳。 1.2.系统处理能力 系统处理能力是指系统在利用系统硬件平台和软件平台进行信息处理的能力。系统处理能力通过系统每秒钟能够处理的交易来评价,交易有两种理解: 一是业务人员角度的一笔业务过程; 二是系统角度的一次交易申请和响应过程。 前者称为业务交易过程,后者称为事务。两种交易指标都可以评价应用系统的处理能力。一般的建议与系统交易日志保持一致,以便于统计业务或者交易。系统处理能力指标是技术测试活动中重要指标。 1.1.1.简称 一般情况下,用以下几个指标来度: HPS(Hits Per Second) :每秒点击次,单位是次/秒。 TPS(Transaction per Second):系统每秒处理事务,单位是笔/秒。吞吐量。 不可分割的。要么完全成功,要么完全失败。 QPS(Query per Second):系统每秒处理查询次,单位是次/秒。 对于互联网业务中,如果某些业务有且仅有一个请求连接,那么TPS=QPS=HPS, 一般情况下用TPS来衡整个业务流程,用QPS来衡接口查询次,用HPS来表示对服务器点击请求。 每秒钟处理完的事务次,一般TPS是对整个系统来讲的。一个应用系统1s能完成多少事务处理,一个事务在分布式处理中,可能会对应多个请求,对于衡单个接口服务的处理能力,用QPS比较多。 1.1.2.标准 无论TPS、QPS、HPS,此指标是衡系统处理能力非常重要的指标,越大越好,根据经验,一般情况下: 金融行业:1000TPS~9000TPS,不包括互联网化的活动 保险行业:100TPS~1000TPS,不包括互联网化的活动 制造行业:10TPS~50TPS 互联网电子商务:10000TPS~100000TPS,例如天猫5万TPS 互联网中型网站:100TPS~500TPS 互联网小型网站: 50TPS~100TPS 1.3.并发用户 常见的错误理解: 使用系统的全部用户(注册用户) 使用系统的全部在线用户 正确理解 并发用户指在同一时刻内,打开系统并进行业务操作的用户并发用户对于长连接(据库连接时长连接,web请求时短连接)系统来说最大并发用户即是系统的并发接入能力。对于短连接系统而言最大并发用户并不等于系统的并发接入能力,而是与系统架构、系统处理能力等各种情况相关 http:请求只能由客户端发出,服务端被动响应。 1.1.3. 简称 Virtual User: VU 1.1.4.标准 一般情况下,性能测试是将系统处理能力容测出来,而不是测试并发用户,除了服务器长连接可能影响并发用户外,系统处理能力不完全受并发用户影响,可以用最小的用户将系统处理能力容测试出来,也可以用更多的用户将系统处理能力容测试出来。 并发用户: 并发用户多少为好? 中小企业:5000用户 1.4.错误率 1.1.5. 定义及解释 错误率指系统在负载情况下,失败交易的概率。错误率=(失败交易/交易总)*100%。稳定性较好的系统,其错误率应该由超时引起,即为超时率。 1.1.6.标准 不同系统对错误率的要求不同,但一般不超出千分之六,即成功率不低于99.4% 1.5.CPU 定义及解释 中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的据。CPU Load: 系统正在干活的多少的度,队列长度。系统平均负载。 CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;CPU sys%小于或者等于30%, CPU wait%小于或者等于5%。单核CPU也需遵循上述指标要求。 7*24不允许宕机 1.6. Memory 内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。 现代的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡系统内有有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。 Swap解释: 当物理内存接近崩溃时,将物理内存中最近一段时间最少频率使用到的页框移出物理内存,放进该存储空间,这段存储空间我们称之为交换空间(Swap) 1.7.磁盘吞吐量 Disk Throughput. 磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的。 磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%。 1.8.网络吞吐量 Network Throughput 10Mbit带宽,每秒传输的字节1.25MBytes 网络吞吐量是指在无网络故障的情况下单位时间内通过的网络的。单位为Byte/s。网络吞吐量指标用于衡系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。 网络吞吐量指标主要有每秒有多少兆流进出,一般情况下不能超过设备或链路最大传输能力的70%。 2.性能测试基本流程 性能测试需求: 1)最终用户体验,例如2-5-10原则,即按照正常用户体验,如果用户能够在2秒内得到响应,会感觉速度很快,如果2-5秒得到响应,用户感觉系统的响应速度还不多,在5-10秒之内得到响应时,用户会感觉系统的响应速度慢,但是可以接受,超过10秒后还没有响应,用户就会感觉不能够接受。 2)技术需求, cpu,内存,网络吞吐量,磁盘吞吐量 3)标准要求: 竞品分析- 响应时间 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。 金融企业:1秒以下为佳,部分复杂业务3秒以下。 保险企业:3秒以下为佳。 制造业:5秒以下为佳。 TPS 金融行业:1000TPS~9000TPS,不包括互联网化的活动 保险行业:100TPS~1000TPS,不包括互联网化的活动 制造行业:10TPS~50TPS 互联网电子商务:10000TPS~100000TPS,例如天猫5万TPS 互联网中型网站:100TPS~500TPS 互联网小型网站: 50TPS~100TPS 性能测试计划 测试环境,测试需求,测试方法,测试时间表,测试组织架构,测试风险,输入输出文档 性能测试步骤: 性能测试执行 3.性能测试工具 4.Jmeter简介 4.1.Jmeter的基本概念 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言 4.2.我们为什么使用Jmeter 开源免费还很好用,基于Java编写,可集成到其他系统可拓展各个功能插件 支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放,入门简单 相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试 多平台支持,可在Linux,Windows,Mac上运行 5.Jmeter安装配置及目录结构 5.1.Windows下Jmeter下载安装 登录 http://jmeter.apache.org/download_jmeter.cgi ,根据自己平台,下载对应文件 安装JDK,配置环境变(具体步骤不做介绍) 将下载Jmeter文件解压,打开/bin/jmeter.bat 5.2.Jmeter的目录结构 /bin 目录(常用文件介绍) examples:目录下包含Jmeter使用实例 ApacheJMeter.jar:JMeter源码包 jmeter.bat:windows下启动文件 jmeter.sh:Linux下启动文件 jmeter.log:Jmeter运行日志文件 jmeter.properties:Jmeter配置文件 jmeter-server.bat:windows下启动负载生成器服务文件 jmeter-server:Linux下启动负载生成器文件 /docs目录——Jmeter帮助文档 /extras目录——提供了对Ant的支持文件,可也用于持续集成 /lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录 /licenses目录——软件许可文件,不用管 /printable_docs目录——Jmeter用户手册 6.Jmeter简单入门 6.1.修改语言 6.2.创建测试计划 6.3.添加线程组 6.4.添加sampler设置http请求 6.5.添加结果树 6.6.查看结果 7.测试计划 独立运行每个线程组: 再每一组运行结束后启动下一个 Run tearDown Thread Groups after shutdown of main threads:   主线程关闭运行后拆除线程组, 8.线程组 Delay Thread creation until needed                延迟创建线程,直到该线程开始采样,即之后的任何线程组延迟和加速时间为线程本身。这样可以支持更多的线程,但不会有太多是同时处于活动状态。  持续时间(秒):测试计划持续多长时间,会覆盖结束时间。  启动延迟(秒):测试计划延迟多长时间启动,会覆盖启动时间。 9.Sampler --HTTP请求 请求方式 请求路径 请求ip 请求协议 请求编码 重定向之前的和之后的请求都会在结果树中显示出来 自动重定向,只会显示重定向之后的地址。 10.结果收集 10.1.查看结果树 10.2.表格查看结果 偏离表示服务器响应时间变化、离散程度测值的大小,或者,换句话说,就是据的分布。 10.3.聚合报告 10.4.Summary Report 11.Jmeter参化 11.1.用户定义的变 使用配置原件中用户定义的变可以进行参化 11.2.用户参 使用前置管理器设置用户参 11.3.使用csv配置原件 配置元件(Config E
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页据显示、据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级据结构,更适合论坛帖子列表这种类型的据 5. 支持混合使用redis缓存和memcached缓存。可以将列表据缓存到redis中,其他kv结构据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作据库中的据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类需求可以通过快速配置来开发。AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端 JOpenID JOpenID是一个轻级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor 的文件持久化组件,以及一个高吞吐量的可靠事务日志组件。 Google地图JSP标签库 利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java据库连接池 BoneCP BoneCP 是一个高性能的开源java据库连接池实现库。它的设计初衷就是为了提高据库连接池的性能,根据某些测试据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K
LoadRunner性能测试工具实战视频教程【全套26集】 随机函 在软件测试工具中如何巧用LoadRunner的随机函。 LoadRunner有自带的随机函,如果巧妙的加以采用,能解决一些看似很困难的实际问题。 一个项目的性能测试。与据库直连,根据外部传入的SQL ID和SQL参,从指定据库中读取SQL模版,拼装成真实的SQL语句、执行,并将得到的结果放入缓存中。目的是减少据库的压力。 该系统将支撑大的SQL操作,性能自然成为备受关注的焦点之一。 由于它跟SQL语句相关,在真实环境下,同一时间可能执行着不同类型的SQL,即便是同一类型,其参也各式各样。那么,怎样才能模拟出最符合实际情况的性能测试场景呢? 首先设计场景,即,在LoadRunner中按照比例随机取到某一类型的SQL,再随机传入参给它,让最终的每条SQL都是随机生成,各不相同。 从场景中,可以看到,此处涉及双重随机。只采用loadruner的参设置是无法实现的。此时需要想办法先按设定好的比例随机取到SQL,然后在每条SQL上随机取参列表中的参。 于是想到了loadrunner的随机函。先实现随机取SQL ID,之后再在特定的SQL中随机取参列表中的参。 LoadRunner中,随机函是rand(),它用来产生0到rand_max之间的随机整。函原型是 int rand (void); 然而调用rand之前,必须给随机产生一个随机种子。这个种子由srand()函产生。其原型是 int srand (seedTime); 2 分析占用率 1. 平均事务响应时间 Average Transaction Response Time 优秀:10s 2. 每秒点击率 Hits per Second LoadRunner分析页面 LoadRunner分析页面 当增大系统的压力(或增加并发用户)时,吞吐率和TPS的变化曲线呈大体一致,则系统基本稳定。若压力增大时,吞吐率的曲线增加到一定程度后出现变化缓慢,甚至平坦,很可能是网络出现带宽瓶颈,同理若点击率/TPS曲线出现变化缓慢或者平坦,很可能是服务器响应时间增加,观察服务器资源使用情况,确定是否是服务器问题。 3. 请求响应时间 Time to Last Byte 4. 每秒系统处理事务 Transaction per second 5. 吞吐量 Throughout 6. CPU利用率 Processor / %Processor Time 好:70% 坏:85% 很差:90%+ 7. 据库操作消耗的CPU时间 Processor / %User Time 如果该值较大,可以考虑是否能通过友好算法等方法降低这个值。如果该服务器是据库服务器, Processor\%User Time 值大的原因很可能是据库的排序或是函操作消耗了过多的CPU时间,此时可以考虑对据库系统进行优化。 8. 核心态CPU平均利用率 Processor /%Privileged Time 如果该参值和"Physical Disk"参值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统 9. 处理队列中的线程 Processor / Processor Queue Length 如果该值保持不变(>=2)个并且%Processor Time 超过90%,那么可能存在处理器瓶颈。如果发现超过2,而处理器的利用率却一直很低,那么或许更应该去解决处理器阻塞问题,这里处理器一般不是瓶颈。 10. 文件系统缓存 Memory / Cache Bytes 50%的可用物理内存 11. 剩余的可用内存 Memory / Avaiable Mbytes 至少要有10% 的物理内存值 12. 每秒下载页 Memory / pages/sec 好:无页交换 坏:CPU每秒10个页交换 很差:更多的页交换 13. 页面读取操作速率 Memory / page read/sec 如果页面读取操作速率很低,同时 % Disk Time 和 Avg.Disk Queue Length的值很高,则可能有磁盘瓶径。但是,如果队列长度增加的同时页面读取速率并未降低,则内存不足。 14. 物理磁盘利用率 Physical Disk / %Disk Time 好:<30% 坏:<40% 很差:<50%+ 15. 物理磁盘平均磁盘I/O队列长度 Physical Disk / Avg.Disk Queue Length 该值应不超过磁盘的1.5~2 倍。要提高性能,可增加磁盘 16. 网络吞吐量 Network Interface / Byt

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值