一.背景
saas版在经过项目组全体成员的不断努力,最终实现了第一版的上线,为了验证sass系统可以支持多少用户同时在线访问,产生了sass版的接口压测。
二.压测是什么为什么要做压测
压测一般指性能压力测试,通过压测可以了解系统稳定性和性能,通过压测结果进行系统的调优。就比如我现在做的这个起航saas系统,一直以来忙于需求开发,看似在线上运行的好好的,可心里总是没有底。因为不了解系统的一个能力,不知道它能够承受多大的用户数在线访问,并且这些都无从考证。通过压测摸底我们可以清晰的了解系统的每一个运行指标,例如机器负载、QPS/TPS、响应时间等,这样就大概知道系统的一个运行能力,做到心中有数。后续可以根据压测结果进行系统调优。
三.本次参与角色
1:开发
开发作为最熟悉系统的人员,需开发协助制造大量数据模拟真实的运行场景。
2:测试
测试作为系统摸底压测的执行者参与其中,负责准备压测环境、压测场景、压测脚本等工作。
3:产品
产品作为系统摸底压测的业务逻辑校验者参与其中,在进行压测的时候也需介入压测并根据压测结果对系统性能有一个初步的认知
四.制定系统性能目标
在进行开展压测工作前需要裁定系统性能目标,方便后续根据目标进行压测和性能调优。在经过项目组探讨下制定了起航sass的性能指标为:系统接口响应时间在5秒内,定时任务可以在1分钟内拉到10家公司主体的数据。
五.设计压测场景和压测脚本
因为sass是面向B端商户的,所以制定了以下两种场景
1:绝对并发(瞬间加压)瞬间加压是一次性将所有流量打到系统上,主要考察系统应对突发流量、瞬时流量的应对能力。
2:梯度加压:梯度加压是一个梯度一个梯度的加压,一个梯度完事会上升到另外一个梯度,会省略掉中间的一些压力值。
六.准备压测工具和监测服务器工具
本次压测起航选用 jmeter 作为压力测试工具
jmeter 是 Apache 开发的基于 Java 的性能压力测试工具,用于对 Java 开发的软件做压力测试,它可以模拟大量用户同时访问网站,对系统产生压力,从而判断系统的性能瓶颈。
选用Linux宝塔面板作为监控服务器资源利用工具
宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA等100多项服务器管理功能。
七.执行脚本和输出压测报告
压测的执行指根据我们制定的压测方案,执行各个压测场景和压测任务,并通过观察和监控系统运行、服务器cpu资源、内存资源和负载资源等运行情况,判断系统是否满足压测目标。通过测试过程中的数据做记录和分析,形成压测报告。
总结有以下几点在:
- 观察系统状态:在压测时需时刻观察系统状态,并运行和请求系统资源来确定压力机是否正常运行,当服务器资源反馈各项指标超负荷运行时,需在浏览器访问系统资源来确定反馈结果是否正确,并且随时做好停止压力机的运行。
- 记录压测数据:压测数据需经过多轮压测结果(一般五轮压测)的平均值来衡量压测数据的准确性并记录下来
- 总结压测报告:写清楚测试背景,测试方法,测试目标和选择的压力机,最后总结本次测试是否达到预期标准,如果未达到需写明和测试目标差距多少并且是那几个接口成为无法突破性能瓶颈的障碍,如果未达到还需与开发和上级领取确认,并提出改进意见和下一次压测时间。如果达到测试目标需明确本次测试数据是经过几轮测试得到的平均数据,是否压倒了系统的瓶颈,性能是否还有可调优空间。