性能压测

更新时间:

性能压测是通过模拟大量并发用户访问系统,测试系统在高负载情况下的性能和稳定性。通过性能压测可以发现系统的性能瓶颈,评估系统的承载能力,并提前发现系统的性能问题和潜在风险,并为系统的容量规划和性能优化提供参考。其实施方案主要包括:

  1. 确定测试目标和负载模型:首先需要明确测试的目标和负载模型,包括确定测试的场景、负载类型、负载量和测试时间等。

  2. 配置测试环境:为进行性能压测,需要先搭建测试环境,包括硬件设备、网络环境和测试工具等。包括开源和云上平台已有的比如PTS等

  3. 制定测试计划和测试脚本:为确保测试的可重复性和准确性,需要制定详细的测试计划和测试脚本,包括测试场景、测试数据和测试结果的分析方法等。

  4. 进行测试和数据分析:执行测试脚本并记录测试结果,包括对系统的响应时间、吞吐量、并发用户数、CPU和内存使用率等指标进行监测和记录,然后对测试数据进行分析和评估,确定系统的性能瓶颈和优化方案。

  5. 性能优化和再次测试:根据测试结果进行性能优化,包括对系统的硬件设备、网络环境和应用程序等进行优化,然后再次进行性能测试,以确认性能是否得到改善。

性能压测包括单点和全链路在内的检查测试。通过性能压测,可以在业务系统上线前发现潜在的性能问题,并为系统的容量规划和性能优化提供参考。

目前主流的几种性能压测工具,包括阿里云PTS、Apache JMeter、ApacheBench(ab)、wrk等,其对比项结果参考如下。

对比项

阿里云PTS

Apache JMeter

ApacheBench

wrk

成本

学习成本

部署、运维成本

SaaS服务,免部署

单机部署成本低、分布式部署成本高

是否收费

开源、免费

开源、免费

开源、免费

分布式能力

是否支持分布式施压

是,但部署、运维成本高

压测引擎能力

单机性能 、稳定性

自研引擎,高

是否支持多协议

支持

支持

不支持

不支持

施压量级

高,最大百万并发、千万TPS

压测场景构造

是否支持客户端录制流量

支持,支持Chrome/iOS/Android录制器

不支持

不支持

不支持

是否支持流程编排

支持,无需编码

支持

不支持

不支持

是否支持出参提取、断言、逻辑控制器等

支持

支持

不支持

不支持

压测数据构造

是否支持文件数据源

支持

支持

不支持

不支持

是否支持从DB中读取数据作为压测数据源

支持

不支持 ,需自己实现

不支持

不支持

是否支持使用函数生成或者二次加工压测数据

支持

支持

不支持

不支持

压测模型构造

是否支持并发模型

支持

支持

支持

支持

是否支持吞吐量模型

支持

不支持

支持

支持

是否支持流量漏斗模型

支持

不支持

不支持

不支持

是否支持自动递增、阶梯递增等流量模型

支持

支持

不支持

不支持

压测流量构造

是否支持多地域流量定制

支持

不支持,依赖自己部署

不支持,依赖自己部署

不支持,依赖自己部署

是否支持IPv6流量

支持

不支持,依赖自己部署

不支持,依赖自己部署

不支持,依赖自己部署

压测流量控制

是否支持压测过程中手动调速

支持

不支持

不支持

不支持

是否支持施压过程中动态扩展最大压力、施压机引擎

支持

不支持

不支持

不支持

压测数据可视化

是否支持压测过程中多维度实时指标监控

实时秒级数据、多维度分析

支持,但分析维度有限

不支持

不支持

是否支持压测报告

支持完整压测报告

支持,报告较简单

支持,报告较简单

支持,报告较简单

是否支持关联被压系统监控数据

支持,可关联阿里云云监控数据

不支持

不支持

不支持

是否支持性能基线能力

支持

不支持

不支持

不支持

具体可以参考高效性能支柱中相关的内容。