性能测试知识总结

概述

为什么要做性能测试

性能测试主要是为了达到以下目标

  • 评估系统能力: 了解系统的处理能力,帮助系统决策。如作为柔性有损的参数参考。
  • 识别系统中的弱点: 了解系统的瓶颈在哪里。
  • 系统调优: 改进性能。(这是一个迭代开发、重复测试的过程)
  • 验证系统稳定性和可靠性: 避免系统因为突发流量而引发故障。结合应用场景,评估系统性能是否满足需要。

性能术语

  • TPS: Transactions Per Second, 单位时间能够处理完毕的事务。(事务服务器,如SQL的Insert、Update、Delete操作)
  • QPS: Query Per Second, 单位时间内能够处理完毕的查询。(查询服务器,如数据库的query操作)
  • PV: Page View, 页面访问量或点击量
  • RT: Response Time, 响应时间
  • UV: Unique Visitor 独立访客数(一天内访问服务的客户端数量)

性能测试的评价指标

(下面很多指标术语在不同的语境下可能会有不同的含义,在评价性能指标时,通常是指他们能够达到的最优值。比如吞吐量是指服务能承受的最大吞吐量。)

吞吐量 与 TPS、QPS

吞吐量,在后台服务中是指单位时间内成功处理完毕的请求数量。

根据后台服务的场景,吞吐量通常可以通过TPS、QPS和并发数反应。

吞吐量可以进一步细分:

  • 平均吞吐量: 一段时间内的吞吐量的平均值。
  • 峰值吞吐量: 一段时间内的吞吐量的最大值。
  • 最低吞吐量: 一段时间内的吞吐量的最小值。
  • 70%吞吐量集中区间: 通过统计15%和85%的吞吐量边界值,计算出70%的吞吐量集中区间。区间越集中,吞吐量越稳定。

并发用户数

并发用户数时值系统可以同时承载的用户数量。

用户要正常使用Web服务通常需要与服务端建立至少一条连接,而服务端能够接受的连接数是有限制的,因而并发用户数通常也是反映系统性能的重要指标。

响应时间

响应时间是指系统对请求做出响应的时间。对于单个用户来说,响应时间与用户体验密切相关。

响应时间也可以做细分:

  • 平均响应时间:一段时间内响应时间的平均值。无法体现响应时间的波动情况。
  • 中间响应时间:一段时间内响应时间的中间值,50%响应时间,有一半的服务器响应时间低于该值而另一半高于该值。
  • 90%响应时间:一段时间内90%的事务响应时间比此数值要小。反应总体响应速度,和高于该值的10%超时率。是用来评估系统容量的重要指标之一。
  • 最小响应时间:响应时间的最小值。反映服务最快处理能力。
  • 最大响应时间:响应时间的最大值。反映服务器最慢处理能力。

CPU占用率和内存占用率

CPU占用率和内存占用率反应了系统资源的使用情况。

如果系统的CPU占用率很低,则可能是系统没有充分利用资源(可以考虑通过多进程、多线程技术优化)。当然也可能是因为本身并发请求量较低。

如何做性能测试

常用性能测试方法

根据测试的指标,可以分为以下几种:

  • 稳定性测试: 测试在未过载场景下,系统长期运行能否正常工作。(稳定性测试需要评估下现实场景的负载和并发量,测试时的负载、并发量不应过低,否则测试就失去了意义)
  • 负载测试: 递增施加负载压力, 获取系统在不同负载下的性能指标。
  • 并发测试: 调节并发请求量,获取系统能够承受的并发请求量。

根据测试的手段,可以分为以下几种:

  • 压力测试: 对系统施加压力,可以分成暴力测试稳定性测试,分别对应时间维度和空间维度。(暴力测试:施加过载压力,评估系统过载时的风险。稳定性测试:测试在未过载场景下,系统长期运行能否正常工作。)
  • 基准测试: 特定标准条件下的测试。指定时间条件或负载条件。
  • 容量测试: 根据负载测试的指标,评估系统的容量。

常见的性能测试工具

Webbench

http://home.tiscali.cz/~cz210552/webbench.html

Loadrunner

https://software.microfocus.com/en-us/products/loadrunner-load-testing/overview

Apache ab

http://httpd.apache.org/docs/2.4/programs/ab.html

性能测试工具的基本实现原理

性能测试工具主要通过增加对服务器的负载和并发数来实现性能测试。

  • 改变负载: 性能测试工具要尽可能快的发出请求包。收到被测服务的响应后随即发送下一次请求。这样的结果就是被测服务处理多快,我们的测试工具就能请求多快。
  • 改变并发数: 并发数主要通过建立多个tcp连接来实现,可以利用多线程、多进程技术,各个进程分别与服务端建立socket连接,从而模拟并发用户。

使用性能测试工具时需要确认性能测试工具自身的运行环境是否会对测试结构产生影响。(比如客户端的负载已经达到瓶颈,而服务端还没有。)

如果性能测试工具自身环境(如网络环境等)会影响测试数据,则不能使用客户端的统计数据作为测试结构。而可以考虑在不同的环境中运行多个性能测试工具,然后采用服务端的统计数据。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏贾老师の博客

雪崩与过载保护

2576
来自专栏Android-JessYan

MVPArms官方快速组件化方案开源,来自5K star的信赖

原文地址: https://www.jianshu.com/p/f671dd76868f

1241
来自专栏性能与架构

Kafka是否适合我们?

2504
来自专栏腾讯移动品质中心TMQ的专栏

腾讯TMQ沙龙|接口测试理论与实践

接口测试理论与实践 活动时间:2016年8月11日 QQ群视频交流 活动介绍 : TMQ在线沙龙第六期分享 本次分享的主题是接口测试理论与实践相关的知识。 共...

2656
来自专栏小白课代表

小白课代表的使用说明(必读)

2222
来自专栏smartguys

(七):C++分布式实时应用框架 2.0

版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律追究的权利!

1933
来自专栏Java架构

Java程序员如何运用所掌握的技术构建一个完整的业务架构

创业之初,我们往往会为了快速迭代出产品,而选择最简单的技术架构,比如LAMP架构,SSH三层架构。这些架构可以适应初期业务的快速发展,但是,随着业务变得越来越复...

2083
来自专栏互扯程序

如何构建一个较为通用的业务技术架构

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

1053
来自专栏嵌入式程序猿

树莓派常用文本编辑器

谈到linux底下的文本编辑器,大家应该知道基本上任何发布的Linux版本都支持vi编辑器,所以vi编辑器是历史最悠久,网上也有人把vi配置的很炫,随着发展的推...

37011
来自专栏领域驱动设计DDD实战进阶

微服务实战(五):落地微服务架构到直销系统(构建高性能大并发系统)

在现代系统中,特别是互联网软件,通常会涉及到大量用户的并发访问,我们的系统一定要在架构上支持高性能、大并发的访问。一个高性能的系统通常由很多的方面组成,包括数据...

1031

扫码关注云+社区

领取腾讯云代金券