性能测试总结

一,后端性能测试

1,接口性能测试

1.1,接口的处理逻辑

梳理接口具体的处理逻辑,是直接调下游接口,获得数据后透传,还是做了逻辑处理再入表,还是插到redis中

1.2,接口整个调用链路

了解压测的这个接口,调用下游具体哪个服务中的哪个接口,这个下游再调用下游。是从表查还是从redis中查

1.3,根据业务量构造压测数据

根据实际业务峰值,构造压测数据量。避免因压测数据量或目标QPS未达标而导致因性能问题出现业务问题。按照80%打到20%时间的比例,先按80%计算业务量,再按20%时间,计算到秒时,有多少QPS。

特别注意点有些业务量需要考虑时间长短,时间长业务数据量到后面越来越多,当数据量大时,再从这个数据量大的表中查数据时,返回的时间可能越久。

1.4,观察性能指定

这个包括产生的QPS,CPU利用率,内存使用率,错误率,以及压测过程中的下游资源情况

2,混合场景压测

单接口压测是针对某个功能出现峰值的压测,但实际上,各个业务场景都是同时进行的,比如同一时间段内,有的用户的登录 ,有的用户在下单,有的用户在付款。为了模拟更加真实的业务场景,就需要混压。

2.1,混压场景设计思路

先梳理混压场景下包括具体哪些功能接口,以及业务数据流向。因为有些可能还包括消息的消费,数据入表,数据查询,功能逻辑处理。

2.2,设置混压比例

比如,一个混压场景下有5个接口,之前己经完成了5个单接口的压测,现在把这5个接口在jmeter中分别按100%的比例设置:A接口目标是200QPS,B接口是400QPS,C接口是500QPS.把这3个接口的QPS汇总,再按对应的目标QPS计算出每个接口的占用比例

2.3,目标QPS

混压场景下每个接口的目标QPS比单接口压测时低50%左右都算正常,比例单接口压测是1000QPS,混压时只要不低500QPS即可

3,常见压测原因分析

3.1,QPS上不来

这个有多种原因导致,如:本身的代码处理,受下游影响,资源不足,缓存等

3.2,资源利用率高

有些高频接口,消耗CPU资源大,当大量请求过来时,CPU资源就跟不上,此时就得加资源解决

3.3,下游响应时间慢

下游接口响应时间慢,导致拿到数据的这个过程慢,影响QPS

3.4,没有利用redis

没有充分利用redis,需要实时请求下游或从表中查数据。这个需根据实际业务场景,比如有些数据是查上周的数据,或者有些数据不需要实时的,可以用redis存起来,再请求时从redis查,就快很多。

3.5,redis的KEY过长

有些大KEY的redis也会导致QPS慢

3.6,下游接口调用方式

有些接口在调下游时采用串行的方式,要更改为并行的方式调用。还有些一个接口要调多次,需下游优化改为一次把多次调用的入参传过来,不需要多次入参多次来调用,比如查3个日期的数据,兼容下,一次传3个日期,在接口中用LIST区分,然后一次返回

3.7,慢SQL

有些请求涉及SQL查询,需结合日志分析查询得到结果的时间长短,如果大于1200豪秒,基本算是慢SQL需要优化

3.8,分页查询或一次性查询

有些数据量大的,后端接口要加页码查询数据,不需要一次性把所有数据查出来,否则也很慢

3.9,SQL相关

有些SQL没有建索引,有些是SQL的写法不对,比如,避免用like查询

4,kafka消息压测

这个消息主要看产生消息和消费消息之间有没有良好的循环,比如,产生的快,消费慢。产生慢,消费快。主要看有没有消息积压。

这个消息的产生可用利用接口脚本来模拟,但是产生消息的数据量也要根据业务量来计算

二,前端性能测试

1,与哪些因素有关

CSS样式,HTML代码

2,视频切片

有些视频大,加载慢。需把一个视频切割成小的视频片加载

3,后端调用高频接口用随机错开

有些业务场景会在某个业务量,一起并发请求后端接口时,可能利用30秒内产生的随机数,进行间隔调用,规避一下大量请求导致后端接口承压过载

相关推荐
人道领域几秒前
【LeetCode刷题日记】90.子集Ⅱ--- 归纳题解
java·开发语言·leetcode
ch.ju6 分钟前
Java Programming Chapter 4——Characteristics of inheritance
java·开发语言
复园电子8 分钟前
企业PDF批量盖章开发集成指南:API对接OA/LIMS系统,高并发落地实战
开发语言·python·pdf
就叫_这个吧8 分钟前
tomcat在idea控制台乱码问题解决
java·tomcat·intellij-idea
SunnyDays101112 分钟前
如何使用 C# 自动调整 Excel 行高和列宽
开发语言·c#·excel
霸道流氓气质18 分钟前
Spring AI Alibaba Skills 完整实战:从零构建智能会议助手
java·人工智能·spring
a诠释淡然25 分钟前
C++模板元编程—现代C++的黑魔法
开发语言·c++
极客先躯28 分钟前
高级java每日一道面试题-2026年02月04日-实战篇[Docker]-如何在容器之间共享数据?
java·运维·网络·docker·容器·自动化·高级面试题
真实的菜29 分钟前
微服务架构痛点
java·微服务·架构
小楊不秃头30 分钟前
Spring:Bean的存储
java·spring·bean