文档章节

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

tantexian
 tantexian
发布于 2016/05/30 19:17
字数 1782
阅读 1465
收藏 4

    对于我们开发来说,我们日常最熟悉的工作就是把客户的需求实现并交付。但是,事情并不是往往就这样结束了,我们还需要后续对上线的系统进行跟踪调查,查看系统的运行情况。为什么呢?一方面,我们需要关注系统在运行过程中的健康问题,是否有异常等等;另一方面我们需要了解系统性能和容量是否能满足用户的日常访问。只有去了解线上系统的运行状况,才能让为后续项目提供参考,及早的调节以避免故障问题。
对于应用系统在线上出现的异常,我们可以通过监控系统的日志扫描或者一些监控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对于理解系统当前运行负荷是很有帮助的。

 

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

 

参考资料:

淘宝性能测试白皮书

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

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

本文转载自:

tantexian
粉丝 225
博文 527
码字总数 746616
作品 0
成都
架构师
私信 提问
性能测试初探——接口性能测试

鉴于接口性能测试的重要性,特发此文。 (一).性能指标 PV: PageView, 页面浏览量或点击量,用户每次刷新即被计算一次;用户的一次刷新,给服务器造成了一次请求。 UV: UniqueVisitor, 访问...

阿阳啊啊
2017/11/06
0
0
如何合理的评估上线服务器数量

一、性能指标 我们知道服务器,有 CPU、内存、IO、网络等一系列指标,除了这些系统级的,还有些针对各个语言自己的性能参数,而一个服务器的吞度量与请求对CPU的消耗、外部接口、IO等等紧密关...

wier
2016/07/24
772
2
Dubbo2.7.x与3.0的优化改进

环境配置 Client与服务端分处两台ECS,配置为8C8G OS:alios7.x86_64 JDK:ajdk-8611-b380 启动参数:-Xms1g -Xmx1g 压测配置:同步调用(最常见的调用方式),200个客户端并发线程,预热30s...

renchie
06/06
0
0
PgSQL · 应用案例 · 阿里云 RDS PostgreSQL 高并发特性 vs 社区版本

摘要: 背景 进程模型数据库,需要为每个会话指派独立的进程与之服务,在连接数非常多,且大都是活跃连接时,进程调度浪费或引入的开销甚至远远大于实际任务需要的开销(例如上下文切换,MEM...

阿里云云栖社区
2018/06/04
36
0
性能测试中TPS和并发用户数

并发用户数:是指现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User)。 并发用户数和注册用户数、在线用户数的概念不同, 1、并发用户数一定会对服务器产生压力...

hxlb2012
2017/07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
2
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
12
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
13
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
6
0
Django的ChoiceField和MultipleChoiceField错误提示,选择一个有效的选项

在表单验证时提示错误:选择一个有效的选项 例如有这样一个表单: class ProductForm(Form): category = fields.MultipleChoiceField( widget=widgets.SelectMultiple(), ...

编程老陆
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部