全链路压测及流量回放探索

📝 面试求职: 「面试试题小程序」内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


全链路压测介绍

全链路压力测试的宏观介绍

全链路压测是在模拟实际用户使用场景的基础上,通过对整个应用程序栈进行压力测试,评估系统在高负载下的表现。这包括了从用户界面、前端服务、中间件到后端数据库等所有组成部分,以全面了解整个软件系统的性能。

什么是全链路压测

全链路压测是一种系统性的性能测试方法,旨在模拟真实用户场景下的完整操作流程,全面评估软件系统在不同压力下的性能表现。这种测试方法对于保证应用程序的高可用性、稳定性和可扩展性至关重要。

基于实际的生产业务场景、系统环境,基于真实数据模拟海量的用户请求对整个业务链进行压力测试,并持续调优的过程;

全链路的核心为:业务场景、数据链路、压力模型和环境拓扑;

全链路压测不仅仅是一种测试手段,更确切来说其是一种测试过程,该过程涉及自动化测试/性能测试/高可用测试技术以外,还覆盖性能分析调优以及扩缩容解决方案等等。

生产环境全链路压测 价值和目标

在这里插入图片描述

压测目标

安全压测验证:

链路梳理:链路涉及应用、中间件自动发现并梳理关联关系。

数据安全隔离:

全链路压测需要将压测数据进行识别并隔离,路由至影子表、影子topic、缓存redis、消息kafka、日志log4j达到验证数据安全隔离的效果。

压测过程安全保证-SLA能力验证:压测过程中设定RT、TPS阀值,验证压测平台是否会自动终止或者告警。挡板能力:对外调服务进行mock,查看压测流量是否通过这个服务外调其他系统。

产品易用性验证:

业务代码零侵入:业务域业务代码无改造,业务流程无影响。

性能问题定位验证:

压测报告及性能问题定位:验证生产环境全链路压测平台压测报告及性能瓶颈发现、定位能力。

全链路压测隔离原理

在这里插入图片描述

压测数据隔离

线上压测中,最复杂的问题就是压测链路中涉及到写操作,如何避免污染线上数据,并且能保证压测请求保持和线上相同的请求路径。业界有很多解决方案,常见的有影子表,影子库,以及数据偏移

MySQL、MongoDB:对于MySQL、MongoDB等数据库,采用影子表的策略。SDK会判断流量是否为测试流量,如果是,则根据配置将操作映射到影子表中。配置策略包括读写影子表和读线上表写影子表两种。

Redis:Redis Key加上 Stress 前缀。如 Stress_Tag=Valuex,那么读写 Redis 的 Key=Valuex_Key。这样可以解决多个压测任务数据冲突的问题。压测结束后,只需要对 Prefix=Valuex 做清除或过期操作即可。

MQ:对于消息队列,平台有两种策略。一是直接丢弃,然后针对消息队列的性能,单独进行压测;二是在Header 中透传压测标记,Consumer 根据压测标记和业务需求,再做特殊处理。默认走丢弃策略,业务方可根据需求进行配置。

其他存储,如ES,ClickHouse 等,都有压测集群。压测时,会将压测请求打到指定的压测集群中。

在这里插入图片描述

全链路压测安全保障

在这里插入图片描述

全链路大屏巡检

实现7*24小时不间断端到端的业务自动巡检,通过大屏可直观实时的查看核心链路运行状态,问题出现在哪个点上,影响的范围有多大,帮助开发和运维人员第一时间发现问题,给处理问题争取了黄金时间

在这里插入图片描述

全链路平台展示

在这里插入图片描述

性能指标

在进行全链路压测和性能测试时,需要关注多个关键性能指标(KPIs)来评估系统的性能表现,以下是一些常见的性能测试指标。

吞吐量(Throughput)

系统在单位时间内能够处理的请求数量或事务数量,通常以每秒请求数(RPS/TPS)来衡量。

响应时间(Response Time)

从发送请求到接收到响应所需的时间,包括网络延迟和服务器处理时间。通常包括平均响应时间、最大响应时间、最小响应时间等。

并发用户数(Concurrent Users)

系统同时处理的用户数,考查系统在高并发情况下的表现。

资源利用率(Resource Utilization)

包括CPU使用率、内存使用、磁盘I/O、网络带宽使用等,反映系统资源是否成为瓶颈。

错误率(Error Rate)

在压测期间系统产生错误响应,如5xx服务器错误的比例,高错误率通常表示性能问题或稳定性问题。

可用性(Availability)

系统在压测期间能够持续对外提供服务的能力,通常要求达到99.9%以上。

峰值处理能力

系统在短时间内处理大量请求的能力,重要的是系统能够在峰值期间保持稳定。

这些指标可以根据测试目标和系统特性的不同而有所侧重,在实际的全链路压测中,需要根据具体的业务场景和性能目标选择合适的指标,并制定相应的测试计划。

在这里插入图片描述

流量录制工具方案对比和总结

在这里插入图片描述

录制工具对比总结:

我们对流量复制有了些基本的概念和应用了,也对tcpcopy 和 goreplay 两款开源工具有了一定的认知。两款开源工具各有优缺点,我们来一块总结下。

tcpcopy部署架构相对复杂,goreplay 相对简单只需启动一个进程。

tcpcopy支持的协议比较丰富,goreplay 根据架构特点仅支持 http。

tcpcopy和 goreplay 都支持离线和在线录制回放。

goreplay有个中间件模块,可自定义部分过滤逻辑。

简单http 复制 goreplay 完全可以胜任,稍复杂点或应用场景更复杂,那么推荐 tcpcopy。更复杂,要求更高的流量复制,那只能开发定制了。

总结

爱康正在推进数字化变革,系统的稳定性需要有强大的保障能力,目前做了一定的性能压测和优化,但是对于系统的稳定性需要全方位保障,做到0事故,引进全链路压测,提前找到云系统复杂链路的瓶颈以及找到性能最大承载能力,为数字化变革做好数据基础建设,从而保障爱康核心业务的稳定性。


最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值