如何做好服务性能测试

本文详细阐述了性能测试的各个阶段,包括性能测试、负载测试、压力测试,介绍了关键术语如事务、并发数和响应时间,并探讨了影响性能压测的因素和如何寻找性能瓶颈。此外,还提供了性能优化措施,如异步写入和连接池调整策略。
摘要由CSDN通过智能技术生成

一、什么是性能测试

新功能上线或切换底层数据库或扩容调优,根据实际业务场景的需要,做必要的性能压测,收集性能数据,作为上线的基准报告。

性能测试一般分一下几个阶段:

1. 性能测试

     并发量小(jmeter 并发线程几十个,可以选择 10 个线程),系统各资源使用率低,接口响应时间端,系统整体吞吐低。

2. 负载测试

 并发量适中,系统各资源已趋于高负载,持续观察接口的吞吐量、各资源的负载情况。通过对比个资源负载,寻找性能瓶颈。

举几个例子:

a. 如果 ECS 负载较高,但是数据库负载较低:

可能的原因:

i. 数据库连接池配置的连接数较小,大流量还没到数据库

ii. 各种连接池,比如数据库的、http 连接池等,及 dubbo 线程池大小。

3. 压力测试

做压力测试的目的,主要是观察接口在瞬时大流量过来的情况,接口各性能指标的变化,来判断接口后端服务及依赖的各中间件是否能承受的住。

二、性能相关的术语

1、事务

用户发送请求->服务器接口请求->服务器从数据库或其他三方服务获取数据->生成服务返回结果->返回用户

2、并发数

系统同时处理的 Request 数

3、响应时间

客户端从发出请求到接收到响应总的耗时时间。

QPS(TPS)

4、系统每秒处理的 Query/Transcation Request 数

QPS(TPS)=并发数/响应时间

1000/s =并发数/0.2s ===》并发数=800  

2000/s =并发数/0.5s ===》并发数= 1000

三、影响性能压测的因素

1. 压测客户端的并发能力

2. 应用系统

a. 池化资源:http connection pool / db connection pool / rabbion

b. 交互数据的大小

c. 逻辑:串行逻辑

3. 数据库 

4. 中间件:redis/kafka 规格及应用使用的参数

三、如何寻找性能瓶颈

1. 首先,要清楚请求链路。从压测机上发出到响应,请求处理需要经过或依赖哪些服务或中间件(同下文的环节,方便描述),所以链路上各每个环节都可能会成为性能瓶颈点。比如请求接口是走域名访问,势必会经过 nginx 转发,那么 nginx 也可能会成为性能瓶颈点。

2. 要清楚整条链路上各环节资源配置。做好链路上各环节的资源的监控,方便及时发现问题。

3. 寻找性能瓶颈,应先从整体到局部排查。首先观察链路上各环节的负载情况,如果发现其中一个环节及之后的环节负载都很低,那么应该是上游领近的节点处理慢了,此时应该重点分析处理慢的节点。待整个链路的各资源(服务器、数据库或其他中间件)的负载上来了,就需要调整环节内部的参数,比如数据库连接池、http 连接池、dubbo 线程池及队列等参数,寻找最优参数值。

四、性能优化措施

性能测试的目的是为了解系统的性能以此评估上线部署时所需要多大资源才能满足业务需求。在调测的过程中,寻找性能瓶颈,发现性能问题,结合业务场景做优化。

1. 读少写多的数据,接受延迟查询的数据,可以考虑异步写入。

2. 优化各连接池及队列的大小

参考:如何做好性能压测丨压测环境设计和搭建

 https://baijiahao.baidu.com/s?id=1690639698157730947&wfr=spider&for=pc

做好性能测试计划需要考虑以下几个关键因素: 1. 确定测试目标:明确性能测试的目的和期望结果,例如确定系统的瓶颈、找出系统的性能瓶颈等。 2. 定义测试范围:明确需要测试的系统组件、功能模块、交易量和用户数量等。确定测试的具体范围有助于规划测试资源和时间。 3. 选择合适的工具:根据系统的特点和需求,选择适合性能测试的工具,例如JMeter、LoadRunner等。确保工具能够模拟实际使用场景和生成足够的负载。 4. 设计测试场景:根据系统的业务流程和用户使用习惯,设计合理的测试场景。考虑并发用户数、事务量、数据量等因素,以及可能存在的异常情况。 5. 准备测试环境:搭建合适的测试环境,包括硬件、软件和网络环境。确保测试环境与生产环境尽可能接近,以保证测试结果的准确性。 6. 制定性能指标:根据系统的需求和用户期望,制定合理的性能指标,例如响应时间、吞吐量、并发用户数等。这些指标可以用于评估系统的性能表现。 7. 编写测试脚本:根据设计的测试场景,使用选择的性能测试工具编写测试脚本。确保脚本能够模拟真实的用户行为和负载,并能够记录相关的性能数据。 8. 执行测试计划:按照测试计划和预定的时间表执行性能测试。监控系统的性能指标,记录测试结果,以及处理可能出现的性能问题。 9. 分析和优化:分析测试结果,识别系统的性能瓶颈和问题所在。根据分析结果,进行性能优化,例如调整系统配置、优化代码、增加服务器资源等。 10. 生成报告和总结:根据测试结果和分析,生成详细的性能测试报告。总结测试过程中的经验教训和改进点,为后续的性能测试提供参考。 以上是一个基本的性能测试计划框架,具体实施时需要根据项目的实际情况进行调整和补充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值