服务器性能测试简略指南
常用系统性能的常见指标:
- 响应时间
(1) 服务器响应时间:服务器完成交易请求执行的时间不包括客户端到服务端的反应(请求和耗费在网络)
(2) 网络响应时间:这是网络硬件传输交易请求和交易结果所耗费的时间。
(3)客户端响应时间:这是客户端在构建请求和展现交易结果时所耗费的时间。
2.吞吐量
指软件系统在每单位系统内能处理多少个事务、请求、单位数据。
不同场景下的诠释,比如数据库的吞吐量值得是单位时间内,不同SQL语句的执行数量;而网络的吞吐量指的是单位时间内在网络上传输的数据流量。
- 资源使用率: 常见的资源有:CPU占有率、内存使用率、磁盘I/O、网络I/O
4.请求书
5.并发用户数(Concurrent users)
常见的性能测试方法
1.负载测试
(1)负载测试是站在用户的角度去观察在一定条件下软件系统的性能表现。
(2)负载测试的预期结果时用户的性能需求得到满足。此指标一般体现为响应时间、交易容量、并发容量、资源使用率等。
2.压力测试
考察系统在极端情况下的表现,极端条件是超负荷的交易量和并发用户数。压力测试和负载测试的不同:压力测试的预期结果就是系统出现问题,而考察的是系统处理问题的方式。
- 并发测试
负载测试往往使用并发来创造负载并发测试。
-
基准测试 当软件系统中增加一个新的模块时,需要做基准测试,以判断新模块对整个软件系统的性能影响。
-
稳定性测试
运行长时间后是否会发生问题
- 可恢复性测试
测试系统能否快速地从错误状态中恢复到正常状态。比如,在一个配有负载均衡的系统 中,主机承受了压力无法正常工作后,备份机是否能够快速地接管负载。可恢复测试通常结 合压力测试一起来做
如何做性能测试
GAME(A)性能测试过程模型: G:Goal,目标 A:Analysis,分析 M:Metrics,度量 E:Execution,执行 (A):Adjust,调整。E 执行失败后才进入 A 阶段,并且涉及的大多是有关开发和系统 管理工作,因此 A 设为隐式
1.定义目标Goal
本步骤的开始时间:需求获取阶段 本步骤的输入:性能需求意向 本步骤的输出:明确的性能测试目标和性能测试策略
(1)度量最终用户响应时间
(2)定义最优的硬件配置
(3)检查可靠性
(4)查看硬件或软件升级
(5)确定瓶颈
(6)度量系统容量
2.分析Analysis
本步骤的开始时间:需求分析阶段和性能测试启动阶段
本步骤的输入:性能需求
本步骤的输出:达成一致的性能指标列表,性能测试案例文档
(1))分析性能需求 在这里,要定义性能测试的内容,细化性能需求。 客户、需求分析人员和测试工程师一起起草一个性能需求标准,对此标准获得一致认同。 此标准将用户的需求细化、量化,并能在测试中作为判断依据。 比如,对于负载测试来说,可以从以下角度来细化需求,逐步找出测试关键点。 测试的对象是什么,例如“被测系统中有负载压力需求的功能点包括哪些?”;“测试中 需要模拟哪些部门用户产生的负载压力?”等问题。 系统配置如何,例如“预计有多少用户并发访问?”;“用户客户端的配置如何?”;“使 用什么样的数据库”;“服务器怎样和客户端通信?”。 应用系统的使用模式是什么,例如“使用在什么时间达到高峰期?”;“用户使用该系统是采用 B/S 运行模式吗?”;“网络设备的吞吐能力如何,每个环节承受多少并发用户?”等问题。 最后得出的性能测试指标标准至少要包含测试环境、业务规则、期望响应时间等。
(2) 分析系统架构
对硬件和软件组件、系统配置以及典型的使用模型有一个透彻的了解。结合性能测试指 标标准,生成性能测试用例。
- 度量(Metrtics)
本步骤的开始时间:性能测试设计阶段
本步骤的输入:细化的性能指标和性能测试案例
本步骤的输出:和工具相关的场景度量、交易度量、监控器度量和虚拟用户度量等
(1)场景的定义,pass/fail 的标准 测试场景包含了性能测试的宏观信息,有测试环境、运行规则和监控数据等。具体可表 现为历史数据记录数、虚拟用户数、虚拟用户加载方式、监控指标等。 (2)事务(Transaction)的定义,pass/fail 的标准 事务用来度量服务器的处理能力。事务定义应该从性能指标标准而来,是性能指标的具 体体现。事务的定义是很重要的,不同的定义会导致不同的 TPS 结果。 提示:使用性能测试工具执行性能测试之后,我们能看到的是 pass/fail 的用户数、pass/fail 的事务数。而这些 pass/fail 的标准应该在执行性能测试之前就应该被定义好。比如, LoadRunner 默认的 pass/fail 标准是基于协议层的,而我们要的 pass/fail 可能是业务级的,需 要在业务层上进行判断来决定是 pass 还是 fail。另外,还可能由于案例的关联性引起的 pass/fail,如果两个案例之间有关联,A 脚本负责向数据库插入数据,B 脚本负责查询数据, A 要是 fail 了,导致 B 也会 fail,虽然 B 本身不一定有错。解决这个问题,一方面可以削弱 脚本之间的关联性,另一方面也可以通过增强脚本的健壮性来达到。 (3)虚拟用户 pass/fail 的标准 虚拟用户是性能测试工具中的一个普遍的概念,虚拟用户负责执行性能测试脚本,在这 里应该定义虚拟用户遇到何种情况,选择 fail 或 pass,即退出或通过。
- 执行(execution)
本步骤的开始时间:软件测试执行阶段 本步骤的输入:场景、交易、虚拟用户等设置信息 本步骤的输出:测试报告
执行测试包含两个工作: (1) 准备测试环境、数据和脚本 测试环境:硬件平台和软件平台。 测试数据:包括初始测试数据和测试用例数据两部分。
(2) 运行场景和监控性能
运行性能测试场景,并监控设定好的数据指标,最终生成测试报告。按照定义好的场景 pass/fail 标准来判断性能测试是否通过。如果未能通过,进入步骤 5(Adjust)。
- 调整(adjust)
调整包含两个意思:应用程序修改和中间件调优。 中间件调优可考虑如下因素操作系统调优: 数据库调优; 内存升级; CPU 数量; 代码调优; Cache 调优
附:linux下使用的服务器监控命令
vmstat 、 /proc/interrupts
vmstat是用来调查系统瓶颈的标准工具
/proc/interrupts 显示具体中断以及上下文切换信息
ps
ps auxww -L 可以按照线程显示CPU的使用率
top
top显示地信息基本是其他命令可以获取信息的集合
netstat
查看网络状态