一、什么是性能测试?
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
二、性能测试内容
1)负债测试(load test):对于分布式网络,测试不同用户数量来测试系统的反应,主要关注性能指标,系统不同表现。
2)压力测试(stress testing):高压状态下多用户高并发测试(30万-50万),主要关注系统是怎么崩溃的。(内存泄漏,cpu无响应,数据库无反应,网络堵塞)
3)容量测试(volumn testing):系统最大支撑的相关数量,数据库最大数据数量,用户数量。
三、性能测试指标
1.从外部看,性能测试主要关注如下三个指标
- 吞吐量:每秒钟系统能够处理的请求数、任务数。
- 响应时间:服务处理一个请求或一个任务的耗时。
- 错误率:一批请求中结果出错的请求所占比例。
2.从内部看,即从服务器的角度看,性能测试主要关注
- CPU
- 内存
- 服务器负载
- 网络
- 磁盘IO
四、各性能指标介绍
1.响应时间
响应时间是最能反应服务器性能的指标之一,也是用户最关心的业务体验(一般响应时间在3s内,用户会感觉比较满意。在3s~8s之间用户勉强能接受,大于8s用户就可能无法接受,从而刷新页面或者离开)
响应时间=网络响应时间+应用程序响应时间=(N1+N2+N3+N4)+(A1+A2+A3)

2.吞吐量
吞吐量:即网络传输的数据量,简单来说,就是处理客户的请求数。
吞吐率:单位时间(可以是秒/分/时/天)内网络成功传输的数据量,如请求数/秒、页面数/秒
吞吐量QPS(TPS)= 并发数/平均响应时间
吞吐量预估方法:采用8/2原则。即80%的请求访问在20%的时间内到达。此时根据系统pv测算出qps值
峰值qps=(总Pv * 80%)/(606024*20%)。
例如500W访问,预估QPS: (500W * 0.8) / (606024*0.2) = 400W / 17280 = 232
3.错误率
错误率和服务的具体实现有关。通常情况下,由于网络超时等外部原因造成的错误比例不应超过5%%,由于服务本身导致的错误率不应超过1%,个别服务要求高,错误率不能超过0.01% 。
4.cpu
后台服务的所有指令和数据处理都是由CPU负责,服务对CPU的利用率对服务的性能起着决定性的作用。
Linux系统的CPU主要有如下几个维度的统计数据:
- us:用户态使用的cpu时间百分比
- sy:系统态使用的cpu时间百分比
- ni:用做nice加权的进程分配的用户态cpu时间百分比
- id:空闲的cpu时间百分比
- wa:cpu等待IO完成时间百分比
- hi:硬中断消耗时间百分比
- si:软中断消耗时间百分比
5.内存
计算机中所有程序的运行都在内存中进行,内存分为物理内存、页面交换(Paging),SWAP内存(虚拟内存)
- 页面交换:当物理内存即实际的内存满了的时候,将物理内存中不常用的进程调出存储到虚拟内存中,以缓解物理内存空间的压力,所以当物理内存与虚拟内存的数据交换频繁的时候,这时候就要关注下内存的性能情况。
- SWAP内存:为进程分配虚拟的内存空间,即调用硬盘的空间作为内存使用。
- 物理内存:一般即使是物理内存满内存也不能代表内存出现问题,主要是看虚拟内存swap,虚拟内存应该<=70%,大于则可以考虑是否内存问题或者内存泄漏
内存的性能分析是用可用内存与页面交换来分析的,可用内存使用占70%-80%为上限,当超出这个数值,内存性能情况就比较危险,而且即使可用内存使用不超过80%的数值时,页面交换比较频繁时,也是要关注下内存情况。
6.网络
指单位时间内通过网络的数据量,当吞吐量大于网路设备或链路最大传输能力,即带宽时,则应该考虑升级网络设备或者增加带宽,Linux命令netstate
7.磁盘IO
磁盘的 I/O,顾名思义就是磁盘的输入输出,输入指的是对磁盘写入数据,输出指的是从磁盘读出数据。服务器常用的是 SAS 和 FC 磁盘,每一种磁盘的性能是不一样的。磁盘吞吐量,指单位时间内通过磁盘的数据量,主要关注磁盘的繁忙率,如果高于70%,则磁盘瓶颈。
四、峰值QPS和机器计算公式
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器
网友评论