解释什么是全链路压测?

全链路压测是指对软件系统或服务进行综合性能测试的一种方法,它模拟了真实的用户场景和环境,从用户端到服务器端的整个链路进行测试,包括用户界面、网络传输、服务器处理、数据库访问等环节。全链路压测的目标是评估系统在高负载和复杂场景下的性能表现,找出性能瓶颈和潜在的问题,以便优化系统的性能和稳定性。

全链路压测解决的是业务场景越发复杂化、海量数据冲击下整个业务系统链的可用性、服务能力的瓶颈等问题,让技术更好地服务业务,创造更多的价值。

面对的问题点以及解决方案包括:

  1. 业务模型梳理:核心业务和非核心业务进行拆分,确认流量高峰针对的是哪些业务场景和模块,针对性地进行扩容准备,而不是为了解决海量流量冲击而所有的系统服务集群扩容几十倍,这样会造成不必要的成本投入。
  2. 数据模型构建:数据的真实性和可用性可以从生产环境完全移植一份当量的数据包,作为压测的基础数据,然后基于基础数据,通过分析历史数据增长趋势,预估当前可能的数据量。
  3. 压测工具选型:全链路压测应对的是海量的用户请求冲击,可以使用分布式压测的手段来进行用户请求模拟,目前有很多的开源工具可以提供分布式压测的方式,比如jmeter、Ngrinder、locust等。
  4. 压测环境搭建:全链路压测都是基于生产环境,解决了业务模型和数据以及压测工具选型开发,就要考虑系统扩容和风险规避了,比如压测不能影响实际的生产业务运行,还有资源申请等。
  5. 系统容量规划:首先应该对单个接口单个服务进行基准测试,调整配置参数,得到一个基准线,然后进行分布式集群部署,通过nginx负载均衡。至于扩容,要考虑到服务扩容和DB资源扩容,以及服务扩容带来的递减效应。
  6. 测试集群部署:能做全链路压测的业务系统基本都是分布式系统架构,服务集群部署和负载均衡就是需要实现和考虑的技术点。
  7. 数据收集监控:压测数据收集需要由agent机回送给Contorller机器,但数据量过大会占用一定的资源,可以考虑异步实现测试结果回送。至于监控现在有很多优秀的专业监控工具如Nmon、Zabbix、全链路监控工具Zipkin、PinPoint以及携程开源的全链路监控工具CAT等。

发表评论

后才能评论