性能测试相关(TPS/RT/PV等)

    对于咱们开发来讲,咱们平常最熟悉的工做就是把客户的需求实现并交付。可是,事情并非每每就这样结束了,咱们还须要后续对上线的系统进行跟踪调查,查看系统的运行状况。为何呢?一方面,咱们须要关注系统在运行过程当中的健康问题,是否有异常等等;另外一方面咱们须要了解系统性能和容量是否能知足用户的平常访问。只有去了解线上系统的运行情况,才能让为后续项目提供参考,及早的调节以免故障问题。
对于应用系统在线上出现的异常,咱们能够经过监控系统的日志扫描或者一些监控api来进行异常监控。好比能够经过应用的监控系统来查看。对于性能方面,咱们有哪些性能指标去关注呢,下面列出了几个在监控系统中最经常使用的性能指标。


PV 
PV是 Page View的缩写。用户经过浏览器访问页面,对应用服务器产生的每一次请求,
记为一个 PV。淘宝性能测试环境下,将这个概念作了延伸,系统真实处理的一个请求,视
为一个 PV。即,PV的概念也适用于接口。 
PV的统计通常能够经过监控埋点或者统计访问日志统计得出。
说到PV还有个特殊的状况,叫PeakPV,指一天中 PV数达到的高峰PV值。
经过一些监控系统,也能够直观看到统计数据。


QPS/TPS
QPS/TPS本来含义为:系统每秒能处理的请求/事务的数量,或者说吞吐量。在web应用咱们更关注的是web应用每秒能处理的request数量。这个是衡量系统性能的重要指标。
QPS(TPS)= 并发数/平均响应时间。 
QPS的统计能够经过访问日志统计对应时间的PV量除以对应时间求得。在性能测试中能够经过工具测试得到。
通常常常统计的是高峰期PV对应的QPS。


ResponseTime响应时间
响应时间(RT)是指从客户端发一个请求开始计时,到客户端接收到从服务器端返回的响应结果结束所经历的时间,响应时间由请求发送时间、网络传输时间和服务器处理时间三部分组成。


LOAD负载
系统平均负载,被定义为在特定时间间隔内运行队列中的平均进程数。若是一个进程满
足如下条件则其就会位于运行队列中:
-它没有在等待 I/O操做的结果 
-它没有主动进入等待状态(也就是没有调用'wait') 
-没有被中止(例如:等待终止)1
这个负载值比较理想的指标值是cpu个数*核数*0.7 ,若是超过长期超过过这个值就须要对系统进行警戒了。


CPU 资源
CPU 资源这里指应用服务系统的 CPU 资源占用率。CPU 资源是判断系统处理能力以及应用运行是否稳定的重要参数。


JVM GC和FullGC
对于java应用的性能指标一定少不了GC的相关指标了。一般咱们的应用应该尽可能避免FGC。由于FGC会进行彻底的垃圾清理,会使应用运行得很慢,因此须要经过设置合适的JVM参数和GC策略来避免FGC。一般监控的指标有GC次数和响应时间。


经常使用的性能指标还有内存占用,磁盘io等一些指标,这里就不一一列出。


上面介绍了一些性能指标的概念和统计方法,下面就讲其中几个之间的一些重要联系和区别。


1. 容量预测
对于咱们设计的系统,咱们在上线前确定须要测试下能接收用户多大的访问量。即但愿评估出最大的日PV到来的时候,咱们的系统是否能支撑。但怎么去评估呢,难道要造一个最大日pv的情景来测试?其实根据已有的经验和数据,能够总结出了高峰QPS和日pv的关系。
 
咱们经过每日的QPS和PV统计图表能够发现,每日的曲线基本都是一致的。经过数学建模,咱们能够发现高峰每台服务器QPS=( (总 PV*80%)/(24*60*60*40%))/服务器数量1。其中80%和40%这2个数字是个不固定的参数,这个公式表明的意思是,在40%的时间(12小时)内产生80%总pv的QPS均值。对于不一样的情景有不一样的参数。
这样咱们就能够经过压测应用获取其高峰QPS,而后根据公式算出指定高峰QPS下的日PV,经过这样来进行容量预测。
即:日预估PV=压测QPS * (24*60*60*时间百分比)/0.8 * 机器数量


2. CPU 资源占用率 与 LOAD
按不少人的印象cpu占用率和load都是对当前cpu使用率的统计。可是实际上这2个指标仍是有很大区别的。
cpu占用率很好理解,就是对cpu使用所占时间比率。而cpu load则是基于一段时间内等待cpu处理的任务队列的平均长度。这个指标在高负载的状况下比cpu占用率具备更高的参考价值。由于在高负荷时段,cpu的占用率基本都接近100%,它没法反映机器负荷的程度。相反,经过统计任务队列的长度能够反映出系统目前负荷是否严重,是否可控。
用下图中公路与车辆的关系能够很好理解load的概念:
(系统是单处理器时)
 
当load等于1的时候,系统满负荷,可是能知足当前的系统需求;
当load小于1的时候,系统轻松运行;
当load大于1时候,有不少车辆等待进入公路,就如任务在等待cpu处理同样,这时候cpu占用率根本没法分辨出load=1和load>1这2种状况。
因此读懂load对于理解系统当前运行负荷是颇有帮助的。

 java

性能指标仍是有不少信息能够去挖的,本文从应用监控的角度出发进行了一个简单介绍。可是不能否认,读懂性能指标是每一个应用负责人去了解系统运行情况的必要条件,也是每一个开发应当关心的内容。web

 

参考资料:api

淘宝性能测试白皮书浏览器

系统吞吐量评估方法http://blog.csdn.net/fenglibing/article/details/6223197服务器

理解 LINUX 的处理器负载均值http://www.gracecode.com/archives/2973/网络

相关文章
相关标签/搜索