一、场景设置原因
通过对场景的设计从而形成和用户需求相同的真实负载。
设计场景关键在于需求和性能测试的目标,设计场景到底是为了测试什么东西是在场景设计前需要好好考虑的。
目标场景的目的就是通过设置目标来验证系统能否达到目标,在项目最后需要确认质量时可以使用目标场景来完成最终的测试报告。目标场景中无法设置集合点策略,系统自动形成并发负载。
当需要定位瓶颈的时候推荐还是要用手工场景。
Hits per Second表示每秒点击数。如100次/s即为系统能够提供每秒钟返回100次HTTP头为200 OK的服务器应答。
Pages per Minute表示每分钟页面的刷新次数,反映了系统在每分钟下所能提供的Page(页面)处理能力。
逐渐增加负载的意义:系统会随着负载的增加而逐渐暴露出资源瓶颈,通过手工场景中的start vusers可以观察随着负载增加系统资源的变化情况,从而得到系统的峰值处理能力。
设置负载逐渐释放,可以分析系统回收资源的能力。
手动设置场景的运行模式为Real-life时,可以反复添加start vusers/duration/stop vusers生成一个波浪型的场景。
手动设置场景的运行模式为Classic Schedule时,用户的Duration持续时间设置会多出Run indefinitely,指脚本会永不停止的运行下去。
负载的真实性是受到脚本影响的。一般real-life运行的脚本会更偏向于模拟用户操作流程,而classic脚本更偏向于模拟一种操作。
例如:设置一个real-life的脚本,那么该脚本就应该包括思考时间、用户随机逻辑选择等情况,尽可能真实的模拟系统负载状态。
而classic的脚本只需要针对某一种操作进行模拟即可,从而可以获得该操作在性能负载下的情况,逐个确认性能指标。
在scenario模式下,要修改各个group的用户数,可以点击菜单schedule-convert scenario to the percentage mode,将场景的用户模式改为百分比模式。该模式下,两个脚本用的是同样的负载方式进行的。
在group模式下,可以独立设置脚本运行模式。还可以通过start group策略为脚本之间设置前后运行关系。
如:需求规定在9-11点进行操作A,在12-14点进行操作B,那么就可以通过group方式来设置场景中的脚本A和B的先后关系来模拟系统的负载情况。
二、场景用户的设置管理
点击Virtual Users按钮可以弹出虚拟用户管理器。在场景运行时,可以选中某个正在运行的用户右键菜单打开show user功能可以获得用户的运行状态(模拟浏览器运行画面)。还可以选中show vusers log打开用户运行的日志。
场景中的run-time setting独立存放在场景.lrs文件中,不会影响脚本在VuGen中的运行设置。在运行场景前要检查运行设置是否合理。
1. think-time在场景中会默认设置为按照脚本录制的lr_think_time()函数运行。所以要在场景运行前检查并设置合理的思考时间值。
2. 负载生成器会调用MMDRV.EXE生成负载。而负载的生成分为进程方式和线程方式两种。
进程方式的话每一个虚拟用户使用一个单独的mmdrv.exe来完成负载的实现,这样用户之间相互独立,不会互相影响但是资源开销大。
线程方式的话所有用户都是在一个mmdrv.exe上模拟的,消耗的资源小。
3. 一般情况运行场景时选择:只有出错才生成日志。除非是为了查找错误调试脚本,才会打开详细日志选项。
4. 关闭自动化事务:脚本默认对每个action都设置一个事务,为了避免多余的数据影响,应该关闭自动化事务选项。
5. 带宽模拟:带宽会直接影响到事务的响应时间,而真实环境下每个用户的带宽也是有限的。所以要为用户设置一个合理的带宽。
带宽模拟中设置的带宽是给每个用户分配的带宽,不是所有用户的带宽。
6. 集合点策略:当场景中多个脚本需要并发负载时,只需要设置同名集合点即可实现。
负载生成器Load Generator
负载生成器是可以单独安装并提供给controller进行远程管理,可以安装在linux下。
如果希望远程的LR能访问这台负载生成器,需要运行Agent Configuration启动LoadRunner Agent Process,确保在任务栏中有小雷达图标的Agent运行。
在windows下,如果排除了防火墙的问题后,Load Generator无法连接一般是由于权限配置错误导致的。解决方法如下:
在安装Load Generator的电脑上,打开LoadRunner中Tools菜单下的LoadRunner Agent Runtime Settings Configuration在选项Allow virtual users to run on this machine without user login输入登录信息。
为了保证负载生成的有效性,在真正实施性能测试前要测试一下负载器是否存在硬件瓶颈(生成负载时的CPU、内存、宽带占用情况),确保负载生成时负载器自身不会成为瓶颈。
三、系统监控
可以使用nmon进行监控