上期我们讲到LoaRunner性能测试场景设计实践之IP欺骗技术。这期我们讲LoaRunner性能测试场景设计实践之负载均衡技术。
负载均衡技术
在测试过程中,测试机也就是负载发生器也可能成为瓶颈。那么为什么测试机也可能成为瓶颈呢?原因是由于负载不均匀造成的。例如,在测试过程中使用4台测试机作为负载发生器,虚拟用户为1000个,这时如果负载分配不均匀,可能出现这种现象,就是1000个虚拟用户从4台中的2台测试机中产生,这样就导致有2台机器特别忙,而另外2台机器就特别闲,这样这2台特别忙的机器,其本身就可能成为瓶颈了。
为了尽可能减少或者避免测试机成为测试过程中的瓶颈,在测试过程中,需要使用所有的测试机产生Vuser,对被测试系统进行施压。
在默认模式下,会发现在Controller中添加多台Load Generators机器时,不管如何添加,最终只能选中一台机器,如图所示。
这样的负载分配是不均匀的,为了解决这个问题,首先要更换场景模式,选择Scenario→Convert Scenario to the Percentage Mode,将场景模式由组模式更换为百分比模式,如图所示。在弹出的对话框中点击“是”按钮即可。
这时,可以在已经添加好的
Load Generators机器列表中选择需要的机器,如图所示。
选择需要的负载机,也可以选择所有的负载机,点击OK按钮,所选择的机器都将被添加进来,如图所示。
如果需要将百分比模式切换回组模式,那么可以选择
Scenario→Convert Scenario to the Vuser Group Mode
将场景模式切换为组模式,如图所示。
这样就可以保证负载机均匀地对服务器进行施压。
RTS设置
在上文中详细的介绍了
Run-Time Settings的设置,在控制器中,当场景和监控都设置好之后,同样需要对Run-Time Settings设置项进行详细的设置。设置好场景后,单击按钮,弹出【MultipleRun-TimeSettingsMode】
对话框,如图所示。
关于多脚本RTS的设置有两种方式:
Shared RTS和Individual RTS。Share RTS表示所有运行的脚本都使用相同的RTS设置项;Individual RTS是指每个脚本单独的设置其RTS内容。
单击SharedRTS按钮或IndividualRTS按钮
会弹出Run-time Settings对话框关于RTS中的设置主要需要关注
Pacing Log ThinkTime
和Miscellaneous四个选项的设置内容。
Pacing设置项主要是设置每次迭之间的时间间隔,根据不同的测试目的,可以设置不同的时间策略。
Log设置项主要是设置回放脚本时,收集的日志方式,情况使用扩展日志中的参数提交的方式。
ThinkTime设置项主要是设置思考时间
关于思考时间也需要根据测试目的来确定
Miscellaneous设置项需要设置出错时,如果处理以及虚拟用户是按进程还线程运行;
执行路径转换
1.路径转换介绍
在运行场景时,LoadRunner会从正在参与的Vuser中收集运行时的数据。默认情况下,LoadRunner将数据存储在每台Vuser计算机上的临时文件中。当场景运行完成后,会在常规结果目录中整理数据。但也可以设置为直接将运行时数据写入共享网络驱动器中。建议不要使用此方法,因为这样会增加网络流量且需要进行路径转换设置。
路径转换是
LoadRunner在转换Controller的远程路径名时所使用的一种机制。一个远程负载发生器将网络驱动器映射为F,而另一个负载发生器将同一个驱动器映射为H。在如此复杂的场景中,需要确保所有参与的计算机能够识别同一个网络驱动器。
Tools→Options→Run-TimeFile Storage选项卡中,可以设置将脚本和运行时数据结果存储在共享网络驱动器上,如图所示。
如果Controller和远程负载发生器对存储运行时结果文件的共享驱动器采用不同的映射,必须执行路径转换。在Windows和UNIX之间进行跨平台路径转换也是有效的。可以通过路径转换将基于Windows的路径(可以被Controller识别)转换成能被UNIXVuser负载发生器识别的路径。
2.编辑路径转换表
LoadRunner将路径转换表保存在一个ASCII文件(ppath.mnt)中。该文件存储在LoadRunner根目录/dat中,对于每个要转换的网络路径都包含一行条目,如图所示。
路径转换表中每一行条目的格式如下:
<controller_host> <controller_path> <remote_path> [<remote_host>]
controller_host:
表示正在运行Controller的计算机名称或类型。例如,如果
Controller运行在一台UNIX计算机上,可以在“controller_host”字段中键入unix。也可以输入Controller计算机的名称(如PC1)。
controller_host的值可以是:
Hostname:Controller运行的计算机名。
Win:Controller运行在Windows计算机上。
Unix:Controller运行在UNIX计算机上。
All:Controller运行在Windows或UNIX计算机上。
controller_path:表示Controller能够识别的特定目录所在的路径。例如,如果脚本所在的目录位于
Controller映射的网络驱动器R中,则在“controller_path”
字段键入路径R:scripts。
remote_path:远程计算机能够识别的特定目录所在的路径。例如,如果脚本所在的目录位于远程负载发生器映射的网络驱动器N中,则在“remote-path”字段键入路径N:scripts。如果远程UNIX负载发生器上的Vuser将上述路径识别为/m/tests,则应在“remote-path”字段中键入该路径。
remote_host:表示负载发生器的名称或类型。
其他可设置的值和controller_host一致,该参数是可选参数。
下面看两个例子:
arivnF:G:loadtesthuang
表示Vuser运行在Windows计算机上。Arivn将网络驱动器映射为F:,而huang将其映射为G:loadtest。
arivnF:/u/tests/loadUnitr
表示Vuser运行在UNIX计算机Unitr上。Arivn将网络驱动器映射为F:,而Unitr将其映射为/u/tests/load。
接下来就是编辑路径转换表了,具体步骤如下:
1.在Controller控制器中选择
Tools→Options选择
PathTranslationTable选项卡,打开路径转换表视图,如图所示。
2.输入路径转换信息之前,请首先考虑使用通用命名约定方法。如果您的计算机是Windows计算机。
可以指示Controller将所有路径转换为UNC。这样,所有计算机都可以识别路径而无需进行路径转换。以下为UNC格式路径的一个示例:\machine_a esults。
选中Convert to UNC复选框
表示LoadRunner将忽略路径转换表并将所有路径都转换为通用命名约定格式。
3.如果您的计算机不是 Windows 计算机并需要路径转换,则在该表中键入路径信息。可以通过在该表中行首处键入#符号来插入注释。点击OK按钮保存信息即可。