主页

索引

模块索引

搜索页面

压测定义

压测是什么

压测,即压力测试,是确立系统稳定性的一种测试方法,通常在系统正常运作范围之外进行,以考察其功能极限和隐患。

主要检测服务器的承受能力,包括用户承受能力(多少用户同时玩基本不影响质量)、流量承受等。

为什么要压测

压测的目的就是通过压测(模拟真实用户的行为),测算出机器的性能(单台机器的QPS),从而推算出系统在承受指定用户数(100W)时,需要多少机器能支撑得住 压测是在上线前为了应对未来可能达到的用户数量的一次预估(提前演练),压测以后通过优化程序的性能或准备充足的机器,来保证用户的体验。

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

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

  1. 新系统上线支持:

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

    在系统重构过程中,通过性能压测验证对比,可以有效验证新技术的高效性,指导系统重构。
    
  3. 业务峰值稳定性保障:

    在业务峰值到来前,通过充分的性能压测,确保大促活动等峰值业务稳定性,保障峰值业务不受损。
    
  4. 站点容量规划:

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

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

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

压测名词解释

从测试目的上性能压测又可以划分为: 压力测试、并发测试、配置测试、负载测试以及可靠性测试:

1. 压力测试(Stress Testing)
   也称之为强度测试,测试一个系统的最大抗压能力,在强负载(大数据、高并发)的情况下,测试系统所能承受的最大压力,预估系统的瓶颈
   是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
2. 并发测试(Concurrency Testing)
   通过模拟很多用户同一时刻访问系统或对系统某一个功能进行操作,来测试系统的性能,从中发现问题(并发读写、线程控制、资源争抢)
   通过模拟用户并发访问,测试多用户并发访问同一个软件、同一个模块或者数据记录时是否存在死锁等性能问题。
3. 耐久性测试(配置测试Configuration Testing)
   通过对系统在大负荷的条件下长时间运行,测试系统、机器的长时间运行下的状况,从中发现问题(内存泄漏、数据库连接池不释放、资源不回收)
   配置测试是通过对被测系统的软/硬件环境的调整,了解各种不同方法对软件系统的性能影响的程度,从而找到系统各项资源的最优分配原则
4. 负载测试是测试当负载逐渐增加时,系统各项性能指标的变化情况。
5. 可靠性测试是在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。

总的来说,性能压测是在对系统性能有一定程度了解的前提下,在确定的环境下针对压测需求进行的一种测试。

如何选取性能压测工具

执行一次完整的性能压测所需要的步骤:

1. 确定性能压测目标:
   性能压测目标可能源于项目计划、业务方需求等
2. 确定性能压测环境:
   为了尽可能发挥性能压测作用,性能压测环境应当尽可能同线上环境一致
3. 确定性能压测通过标准:
   针对性能压测目标以及选取的性能压测环境,制定性能压测通过标准,对于不同于线上环境的性能压测环境,通过标准也应当适度放宽
4. 设计性能压测:
   编排压测链路,构造性能压测数据,尽可能模拟真实的请求链路以及请求负载
5. 执行性能压测:
   借助性能压测工具,按照设计执行性能压测
6. 分析性能压测结果报告:
   分析解读性能压测结果报告,判定性能压测是否达到预期目标,若不满足,要基于性能压测结果报告分析原因

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

不同性能压测环境的优缺点对比

以下 4 个压测环境方案在使用场景、优缺点、成本、阿里云及其客户的应用情况做了对比。

https://img.zhaoweiguo.com/knowledge/images/testings/stress_testing_env.png

主页

索引

模块索引

搜索页面