发布时间:2020-07-09
在介绍性能压测概念与背景之前,首先解释下为什么要做性能压测。根据统计,网站每慢100毫秒,交易额下降1%。这些事件和统计数据为大家敲响了警钟,也客观说明了性能压测对于企业应用的重要性。从具体的作用上讲,性能压测可以用于新系统上线支持、技术升级验证、业务峰值稳定性保障、站点容量规划以及性能瓶颈探测。
1. 新系统上线支持
在新系统上线前,通过执行性能压测能够对系统的负载能力有较为清晰的认知,从而结合预估的潜在用户数量保障系统上线后的用户体验。
2. 技术升级验证
在系统重构过程中,通过性能压测验证对比,可以有效验证新技术的高效性,指导系统重构。
3. 业务峰值稳定性保障
在业务峰值到来前,通过充分的性能压测,确保大促活动等峰值业务稳定性,保障峰值业务不受损。
4. 站点容量规划
通过性能压测实现对站点精细化的容量规划,指导分布式系统机器资源分配。
5. 性能瓶颈探测
通过性能压测探测系统中的性能瓶颈点,进行针对性优化,从而提升系统性能。
综上所述,性能压测伴随着系统开发、重构、上线到优化的生命周期,因此有效的性能压测对系统的稳定性具有重要的指导意义,是系统生命周期中不可或缺的一部分。
性能压测概念
性能压测是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。从测试目的上性能压测又可以划分为负载测试、压力测试、并发测试、配置测试以及可靠性测试。
负载测试是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
并发测试通过模拟用户并发访问,测试多用户并发访问同一个软件、同一个模块或者数据记录时是否存在死锁等性能问题。
配置测试是通过对被测系统的软/硬件环境的调整,了解各种不同方法对软件系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
可靠性测试是在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
总的来说,性能压测是在对系统性能有一定程度了解的前提下,在确定的环境下针对压测需求进行的一种测试。
如何选取性能压测工具
在选取合适的性能压测工具之前,我们需要先先了解执行一次完整的性能压测所需要的步骤:
1. 确定性能压测目标:性能压测目标可能源于项目计划、业务方需求等;
2. 确定性能压测环境:为了尽可能发挥性能压测作用,性能压测环境应当尽可能同线上环境一致;
3. 确定性能压测通过标准:针对性能压测目标以及选取的性能压测环境,制定性能压测通过标准,对于不同于线上环境的性能压测环境,通过标准也应当适度放宽;
4. 设计性能压测:编排压测链路,构造性能压测数据,尽可能模拟真实的请求链路以及请求负载;
5. 执行性能压测:借助性能压测工具,按照设计执行性能压测;
6. 分析性能压测结果报告:分析解读性能压测结果报告,判定性能压测是否达到预期目标,若不满足,要基于性能压测结果报告分析原因。
由上述步骤可知,一次成功的性能压测涉及到多个环节,从场景设计到施压再到分析,缺一不可。工欲善其事,必先利其器,而一款合适的性能工具意味着我们能够在尽可能短的时间内完成一次合理的性能压测,达到事半功倍的效果。
工具选型对比
在论述了性能压测必要性之后,如何选取性能压测工具成为一个重要的议题?本文选取了市场上主流性能压测工具:(ab)Apache Bench、LoadRunner,并从多个方面出发分析了各个工具的优缺点,汇总后的优缺点如下表所示:
ab作为一款命令行测试工具,适用于本地对支持HTTP协议的单一地址进行性能压测,但缺少相应的链路编排、场景管理、数据可视化等大规模性能压测基础功能,无法应用于生产环境。
LoadRunner 作为一款性能压测商业软件,功能较为齐全,使用者能够借助 LoadRunner 达到简单的性能压测场景编排、施压目标;但它也存在学习成本居高不下、扩展性差等缺点,此外支持的协议有限,不适合复杂的性能压测环境。
PerformanceRunner是国内领先的支持http、https、websocket、tcp/ip、MQ等各种协议、10万+海量并发、精准可靠的性能测试工具,极大地降低了应用系统运行风险。
本文介绍了性能压测的概念以及相关背景,并针对目前几款受众相对较多的性能压测工具给出了优缺点分析,每种工具都有相应的优缺点,大家可以针对自身需求选取合适的性能压测工具。
推荐阅读:
您的信息已成功提交!
我们的客服人员稍后会与您联系