压测认识

一、压测定义

压测,即压力测试,是确立系统稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患;同时也是一个试图确定应用在高于正常负载的情况下稳定性的过程。

二、压测类型

  • 功能压测
  • 性能压测(目前)

    三、为啥需要压测

    举例:从09年的淘宝双十一大促导致多家合作银行后台系统接连宕机,到春运期间12306购票难,再到之前聚美优品促销活动刚开始就遭秒杀。根据Amazon统计,每慢100毫秒,交易额下降1%。这些事件和统计数据为大家敲响了警钟,也客观说明了性能压测对于企业应用的重要性。

从具体的作用上讲,性能压测可以用于新系统上线支持、技术升级验证、业务峰值稳定性保障、站点容量规划以及性能瓶颈探测。

  1. 新系统上线支持
    在新系统上线前,通过执行性能压测能够对系统的负载能力有较为清晰的认知,从而结合预估的潜在用户数量保障系统上线后的用户体验。

  2. 技术升级验证
    在系统重构过程中,通过性能压测验证对比,可以有效验证新技术的高效性,指导系统重构。

  3. 业务峰值稳定性保障
    在业务峰值到来前,通过充分的性能压测,确保大促活动等峰值业务稳定性,保障峰值业务不受损。

  4. 站点容量规划
    通过性能压测实现对站点精细化的容量规划,指导分布式系统机器资源分配。

  5. 性能瓶颈探测
    通过性能压测探测系统中的性能瓶颈点,进行针对性优化,从而提升系统性能。

综上所述,性能压测伴随着系统开发、重构、上线到优化的生命周期,因此有效的性能压测对系统的稳定性具有重要的指导意义,是系统生命周期中不可或缺的一部分。

四、性能压测概念

  • 性能压测是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
  • 从测试目的上性能压测又可以划分为负载测试、压力测试、并发测试、配置测试以及可靠性测试。

  • 负载测试是测试当负载逐渐增加时,系统各项性能指标的变化情况。

  • 压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

  • 并发测试通过模拟用户并发访问,测试多用户并发访问同一个软件、同一个模块或者数据记录时是否存在死锁等性能问题。

  • 配置测试是通过对被测系统的软/硬件环境的调整,了解各种不同方法对软件系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
    可靠性测试是在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
    总的来说,性能压测是在对系统性能有一定程度了解的前提下,在确定的环境下针对压测需求进行的一种测试。

性能测试包括负载测试、压力测试、基准测试等。

  1. 负载测试
    通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。

  2. 压力测试
    也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等

  3. 基准测试

性能测试做什么?

性能测试是通过使用各种工具,来模拟各种可控与不可控的请求。通过模拟生产运行的业务以及使用场景的组合形成多种性能测试点,测试系统的性能是否能够满足生产性能要求。在特定条件下运行验证系统承受能力。通过各项性能指标来判断系统是否达到生产需求,及时对系统做出风险评估。发现问题、解决问题,回馈用户高质量的体验

性能测试怎么做?

我们系统的性能测试利用市面上测试工具进行性能测试。这种测试方法可以捕获部分问题,但很难模拟业务场景组合。而且测试工具五花八门,不利于搜集测试性能结果。我们现在进行的性能测试开发,利用统一的性能测试工具Jmeter做为核心。利用influxDB数据库做数据收集,Grafana做性能数据展示平台。搭建完整的性能测试平台,开放统一的性能测试通道,建立通一的性能指标收集平台。平台根据我们自己的业务要求建立性能测试计划,推出不同的业务模板。通过平台接口可进行合理的性能测试。我们可根据不同业务展示不同的性能图形。有利于测试人员及时定位问题

五、如何选取性能压测工具

在选取合适的性能压测工具之前,我们需要先先了解执行一次完整的性能压测所需要的步骤:

  1. 确定性能压测目标:性能压测目标可能源于项目计划、业务方需求等

  2. 确定性能压测环境:为了尽可能发挥性能压测作用,性能压测环境应当尽可能同线上环境一致

  3. 确定性能压测通过标准:针对性能压测目标以及选取的性能压测环境,制定性能压测通过标准,对于不同于线上环境的性能压测环境,通过标准也应当适度放宽

  4. 设计性能压测:编排压测链路,构造性能压测数据,尽可能模拟真实的请求链路以及请求负载

  5. 执行性能压测:借助性能压测工具,按照设计执行性能压测

  6. 分析性能压测结果报告:分析解读性能压测结果报告,判定性能压测是否达到预期目标,若不满足,要基于性能压测结果报告分析原因

由上述步骤可知,一次成功的性能压测涉及到多个环节,从场景设计到施压再到分析,缺一不可。工欲善其事,必先利其器,而一款合适的性能工具意味着我们能够在尽可能短的时间内完成一次合理的性能压测,达到事半功倍的效果。

工具选型对比
在论述了性能压测必要性之后,如何选取性能压测工具成为一个重要的议题?本文选取了市场上主流性能压测工具:(ab)Apache Bench、LoadRunner、JMeter、阿里云PTS,并从多个方面出发分析了各个工具的优缺点,汇总后的优缺点如下表所示:

压测工具 Apache Bench(ab) LoadRunner JMeter PTS
学习成本
安装部署成本
是否免费
是否支持多协议
压测结果是否能够图形化展示
是否支持TPS模式
是否有链路、场景编排管理支持
是否支持场景录制
生态环境强弱
监控指标是否完备
是否原生支持流量地域定制
### 总结
目前采用jmeter和loadrunner主导检查测试反馈。

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至 chaofa_vip@126.com

文章标题:压测认识

文章字数:2.1k

本文作者:Hechaofa

发布时间:2019-03-02, 02:13:47

最后更新:2019-12-19, 00:43:28

原始链接:https://chaofavip.github.io/2019/03/02/tool/yace/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏