ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

虚拟机跑LoadRunner实战:环境搭建、压测与避坑指南

虚拟机跑LoadRunner实战:环境搭建、压测与避坑指南 1. 为什么要用虚拟机跑LoadRunner场景与边界1.1 哪些情况适合虚拟机方案先聊点实在的。很多人一听LoadRunner就觉得庞大、难装、License贵实际做性能测试时优先想到的往往是JMeter。但工作里总有绕不开LoadRunner的时候比如公司历史项目脚本是用LR写的比如客户验收时指定要用LoadRunner出报告再比如你自己想系统学一下这个老牌工具但不想在主力开发机上装一堆服务和组件。这时候虚拟机就非常有用了。用VMware Workstation跑一个Windows虚拟机在虚拟机里装LoadRunner主要有三个好处第一是隔离干净LoadRunner依赖的组件不少它自带的HP Network Virtualization、STB等服务和开发机的环境容易产生冲突装虚拟机里不污染主系统第二是快照方便安装出问题、License搞坏了、注册表被写乱回滚一下快照就恢复不用重装系统第三是部署灵活可以复制虚拟机文件给同事对方直接打开用整个环境分发成本极低。我见过很多测试团队的做法是把压测机分成两批一批用物理机跑高并发压力一批用虚拟机搭LoadRunner控制台和脚本开发环境两者配合使用。对个人学习和中小规模项目的性能验证来说虚拟机方案完全够用。1.2 哪些情况不建议硬上虚拟机虚拟机不是万能的。如果你要压测的目标系统本身就对资源敏感比如目标服务器吞吐量非常高单机并发需要几千甚至上万的虚拟用户数那么虚拟机上跑LoadRunner会产生两个明显短板一是虚拟化层对CPU和网络有额外开销压测机本身容易成为瓶颈二是物理机内存被虚拟机占用后LoadRunner的Controller和Vuser进程分配到资源有限结果数据可能不准确。还有一种情况是你在做硬件性能基准测试比如跑SPEC或者公司内部要求的极限压测这时候任何虚拟化层带来的性能损耗都会被客户质疑最好还是用物理机直连。我的建议是一条简单分界线个人学习、功能验证、中小项目压测虚拟用户数控制在几百以内、脚本调试大胆用虚拟机高并发生产级压测、性能基准认证、需要极限资源的场景老老实实准备物理机。2. 环境准备VMware虚拟机配置与LoadRunner版本选型2.1 虚拟机平台的选择与安装注意点当前主流的虚拟机平台就是VMware Workstation Pro和Oracle VirtualBox两个阵营。LoadRunner官方文档和社区案例里在虚拟机环境下的测试大多基于VMware Workstation兼容性验证相对充分。VirtualBox也能跑但建议用Workstation因为它在硬件虚拟化支持、网络模式、3D加速和磁盘性能方面更稳定尤其对Windows虚拟机的驱动支持更好。VMware Workstation Pro现在对个人使用已经免费了官网注册个账号就能拿到许可安装没什么难度。装完以后有几个关键检查项在BIOS/UEFI里确认开启CPU虚拟化。Intel平台是Intel VT-xAMD平台是AMD-V很多机器出厂默认是关闭的安装虚拟机系统时提示“此主机支持Intel VT-x但Intel VT-x处于禁用状态”就是这个问题。开机进BIOS找到Advanced或者Processor相关设置把Virtualization Technology改成Enabled即可。打开任务管理器查看虚拟化是否已经生效。如果任务管理器性能选项卡里显示“虚拟化: 已启用”就说明BIOS设置成功了如果显示“未启用”或“已禁用”说明设置没生效需要重启重试。如果之后出现“WSL2 无法启动因为此计算机上未启用虚拟化”的报错也大概率是上面这个问题在固件里开启虚拟化支持后重启就能解决。2.2 虚拟机资源规划CPU、内存、磁盘的合理分配这是很多人最容易踩坑的地方。虚拟机的配置不是随便给的LoadRunner对资源的需求分两个阶段安装阶段和运行阶段。先看安装阶段LoadRunner 2023社区版安装包解压后大概5GB左右安装过程中会启动SQL Server Express用于存储分析结果和许可证服务内存占用会飙升到4GB以上。如果你只给虚拟机分配4GB内存安装时极有可能卡在“数据库服务启动失败”之类的地方。再看运行阶段我实际测过在虚拟机里开Controller加载脚本、跑100个VuserLoadRunner相关进程加在一起大概占2到3GB内存。如果再开Analysis分析结果还要再加1GB。建议最低配置是配置项最低要求推荐配置备注CPU核心数2核4核及以上脚本编译和场景控制对CPU敏感内存8GB16GB确保物理机至少有32GB内存磁盘60GB100GB SSD用固定大小磁盘别用动态增长网络NAT即可桥接模式压测外部系统时用桥接磁盘这里要特别提醒一下VMware新建虚拟机时默认是“将虚拟磁盘存储为单个文件”这没问题。关键是磁盘类型要选“固定大小立即分配所有空间”而不要选动态增长。因为LoadRunner在场景运行中会写大量日志和结果数据动态磁盘会在运行过程中不断扩容一是增加IO延迟二是可能遇到宿主机磁盘空间不足导致压测中断踩过的人都懂。2.3 LoadRunner版本怎么挑社区版够不够用LoadRunner现在的版本迭代路线是2021、2022、2023、2023 R1。每次大版本更新界面和组件都有调整但核心架构没变Controller VuGen Analysis三件套一直都是主力。目前获取最方便的是LoadRunner Community版Micro Focus官网注册后可以直接下载免费使用但有一个严格限制最多只能模拟50个虚拟用户Vuser。50个虚拟用户对学习、脚本调试、功能验证、以及压测个人开发机上的小应用完全够用了。如果你要压测稍大一点的系统比如模拟200个并发用户社区版就不行了需要找企业试用License或者用旧版的破解方案这里我不展开说破解的事只提一下新手阶段社区版足够。版本选择上建议直接上LoadRunner 2023 Community它对Windows 10/11的兼容性好很多而且VuGen内置了Chrome浏览器录制支持。老版本LoadRunner 12.53、12.60在Win10上偶尔会有录制线程崩溃的问题新手很容易卡在录制环节体验不好。还有一点值得注意LoadRunner 2023的社区版安装包里包含的元件和完整版略有差别比如没有安装性能中心Performance Center。对大多数人的学习场景来说这个组件完全不涉及不影响使用。3. 安装过程详解从虚拟机系统到LoadRunner完整落地3.1 虚拟机内操作系统安装的细节虚拟机平台搞定后接下来的操作系统选择直接影响LoadRunner的兼容性。LoadRunner 2023官方支持的操作系统是Windows Server 2016/2019、Windows 10、Windows 11。从实际操作便利性来看Windows 10专业版64位体验最好——因为LoadRunner的一些服务组件在Win11上偶尔会有权限弹窗问题虽然能解决但对新手来说多一个麻烦不如少一个麻烦。虚拟机里装Windows系统有几个细节要处理好一是ISO镜像来源。这个不用多说微软官网的media creation tool直接下载或者使用已有的官方ISO文件。网上那些ghost版、精简版系统镜像千万别用LoadRunner依赖的.NET Framework、VC运行库、Windows Installer服务在这些精简包里经常是残缺的你会在后续安装中遇到各种莫名奇妙的问题排查起来非常痛苦。二是虚拟机设置里要开启“虚拟化引擎”。在VMware中选中虚拟机 → 右键设置 → 处理器勾选“虚拟化Intel VT-x/EPT或AMD-V/RVI”。这个选项能显著优化虚拟机内Windows子系统的性能LoadRunner安装时自带的SQL Server数据库服务对虚拟化支持的敏感性较高不开这个选项容易出现性能异常。三是在装完系统后先装VMware Tools。这一步很重要但不一定所有人都知道原因VMware Tools提供虚拟显卡驱动和交互服务没有它的话虚拟机内分辨率固定、复制粘贴失效、文件拖拽不可用。后续LoadRunner录制脚本要跟浏览器打交道没有拖拽和共享文件夹功能传脚本文件会非常麻烦。3.2 LoadRunner安装步骤与组件说明系统就绪后把LoadRunner社区版安装包复制到虚拟机内推荐用共享文件夹或者直接拖拽前提是VMware Tools已装好。关于ISO镜像的加载直接在VMware虚拟机设置里双击光驱设备选择ISO文件路径即可不需要刻盘。安装过程有几个节点需要特别注意第一步关闭安全软件。安装LoaderRunner之前务必把Windows Defender实时防护和任何第三方杀毒软件临时关掉。LoadRunner安装过程中要往系统服务注册表里写入大量内容杀毒软件会拦截部分操作表现就是安装进度条走到一半卡住或者安装完成但服务列表里找不到HP相关服务。我有一次在装有360的虚拟机里装LoadRunner装完后License服务无法启动排查了三个小时最后发现是360把服务DLL文件隔离了。第二步选择安装模式。LoadRunner的安装向导有几种模式典型安装(Typical)、自定义安装(Custom)。学习用途选典型就够了但如果你对组件有洁癖可以自定义去掉用不到的“Protocol Advisor”等组件。我建议只保留核心组件VuGen、Controller、Analysis、LoadRunner Professional自带的协议支持和示例程序。第三步注意安装路径不要有中文和空格。默认路径是C:\Program Files\Micro Focus\LoadRunner这个路径本身没空格没问题。但如果你图方便改成C:\LR这种短路径反而更稳妥——为什么这么说因为VuGen生成脚本时工作路径如果过深或者含特殊字符有概率在回放时报路径错误。我一般直接改到C:\LR简单粗暴。第四步License配置。社区版安装完成后需要登录Micro Focus账号验证这个环节需要虚拟机能够正常访问外网。如果虚拟机网络不通这一步会卡住。验证成功后License工具里会显示Community版50 Vuser上限。这里补充一句安装前确认宿主机网络、虚拟机NAT网络都正常不要为了这步去折腾各种热点代理卡了先检查网络。3.3 安装后必须做的三项校准装完LoadRunner不代表就能直接用了实际经验告诉我有三件事必须先做否则后面录制脚本时会被坑。第一关闭Windows防火墙或添加例外。虚拟机的IP和物理机在同一网络下Controller要连接到Load GeneratorVuGen要跟浏览器通信都能通过防火墙放行。最简单的做法控制面板 → Windows Defender防火墙 → 关闭或者入站规则里添加LR安装目录下的可执行文件wdmgr.exe、drvsvc.exe、controller.exe等。个人虚拟机测试环境推荐直接关防火墙省事。第二设置虚拟机的固定IP。如果你要用桥接模式压测局域网里的其他服务器DHCP分配的IP会导致每重启一次虚拟机IP就变Controller里的Load Generator配置要跟着改。改成固定IP后脚本、监控配置、生成器地址都稳定少很多麻烦。控制面板网络适配器里直接改IPv4即可注意IP段要跟宿主机在同一网段、网关DNS对应填好。第三验证LoadRunner服务和进程是否正常。安装完成后打开服务管理器services.msc确认有这些服务存在且状态正常Micro Focus License Server、Micro Focus Process Information、Micro Focus Performance、Micro Focus Remote Command Server。如果某个服务启动失败多半是安装时被杀软拦截或依赖的SQL Server Express没起来。正常状态下打开LoadRunner加载示例脚本bin\demo_script跑一次场景能完整输出结果环境就是通的。4. 性能测试实操在虚拟机里录脚本、跑场景、看报告4.1 录制脚本协议选择与浏览器设置的坑环境就绪后第一次跑通完整流程是最有成就感的时刻也是踩坑最多的时候。第一步是录制一个HTTP请求脚本。打开VuGen新建脚本选择协议。对于绝大多数基于网页的应用选Web - HTTP/HTML协议就够了。它是LoadRunner用得最多、最稳定的协议覆盖Web页面、REST API、表单提交等绝大多数场景。新手不要一上来就选Web Services协议或者Windows Sockets除非你明确知道自己要测的是WebService接口或者是自定义TCP协议服务。协议选好后进入录制界面。LoadRunner 2023录制时可以选浏览器类型推荐用Chrome。录制原理是通过设置代理默认端口一般是127.0.0.1:8888捕获浏览器发出的HTTP请求。这里有一个关键的坑如果目标系统是本机服务比如localhost或127.0.0.1需要确认代理对localhost也生效。浏览器默认对localhost地址不走代理需要在录制设置里把localhost添加到“绕过代理”的排除列表之外或者干脆录制时用本机IP而不用localhost访问。另一个常见的录制问题VuGen的录制窗口打开了但浏览器里怎么点都不生成事件。这种情况90%是因为浏览器扩展冲突或者代理被篡改。LoadRunner录制时会自动创建带专用配置的浏览器实例如果系统默认浏览器被设成Edge且禁用了扩展加载录制会失败。我一般手动在录制设置里选择“打开指定浏览器”并指向Chrome的exe这样最可控。录制过程有两点值得注意第一录制前把需要传的参数准备成测试数据避免录制时临时心算乱填第二录制完停止后务必在脚本里先做关联处理再做回放。我见过最多的错误就是新手直接点回放发现响应码403、500了其实就是动态参数没有关联。LoadRunner 2023有自动关联功能Design Studio扫描并建议候选关联项新手可以直接用自动关联体验比旧版好太多。4.2 设计负载场景虚拟用户数与资源瓶颈的关系脚本回放通过、批次验证没问题后就可以到Controller里设计负载场景了。Controller界面核心就是Scenario设计场景组、虚拟用户数、启动策略、运行时长。此处关键任务是回答“虚拟机到底能扛多少虚拟用户”这个问题。以我个人实测经验一台分配了4核8GB的Windows虚拟机跑典型的Web HTTP/HTML脚本80%的页面静态资源虚拟用户数支撑到300个问题不大超过500个时LoadRunner自身的CPU和内存会先飙升结果数据会变得不可信。为什么这样因为LoadRunner的每个Vuser进程都要消耗内存和CPU时间片而虚拟机本身只有4核和8GB记忆体一核的物理CPU要模拟出多个逻辑执行单元虚拟化层还要再扣掉一部分开销。所以虚拟用户数上不去通常先卡在压测机自身资源而不是目标服务器被打垮。设计场景时的参数有讲究初始化策略默认是“在每个Vuser运行前将其初始化”选择这个没问题。如果虚拟用户比较多可以改成“在每个迭代运行前初始化”减少内存峰值。启动策略选“同时启动全部Vuser”会造成压测机瞬间满负荷建议用“每30秒启动5个Vuser”这种方式平滑加载数据更真实。运行时长至少跑5分钟以上才有统计意义。如果只是冒烟验证跑2分钟能出报告就行。但正式压测建议15分钟以上热数据、连接复用、GC抖动都会在长时间运行中体现出来。集合点Rendezvous如果测试目标关注并发峰值比如秒杀场景可以在事务前加集合点让所有虚拟用户同时触发。要注意集合点会放大瞬时压力虚拟机方案下慎用因为压测机自身可能先崩。4.3 如何判断虚拟机环境下的压测结果是否可信这是个特别重要的话题。用虚拟机跑LoadRunner最怕的就是辛辛苦苦测出一堆数据结果别人一句“虚拟机测的不准”就给否了。所以你需要主动做三件事来自证数据可信度第一压测前先压一次压测机自己。用Process Explorer微软官方小工具或者任务管理器观察跑场景时虚拟机的CPU使用率、内存占用曲线。如果CPU使用率长期在80%以上说明压测机自己就是瓶颈这轮结果只能作为参考不能作为最终定论。理想状态是压测过程中虚拟机的CPU和内存都控制在50%以下这样数据可信度才高。第二做一个基线对照。同一个脚本同一个场景先在虚拟机里跑一轮再到物理机上跑一轮对比两端的数据差异。如果平均响应时间差异在10%以内那说明你的虚拟化性能开销很小数据可用于日常工作决策。如果差异太大就需要把虚拟机的CPU资源预留策略调一下或者升级宿主机配置。第三观察网络I/O。压测机到目标服务器的网络延迟在局域网内应该低于1ms如果出现不稳定或者远高于物理机检查一下VMware的网络适配器型号——虚拟机网卡类型改成VMXNET3在虚拟机和虚拟机硬件设置里调整性能比默认的E1000好很多尤其在VMware的虚拟网络下。简单说虚拟机跑出来的数据不是不能用但你要知道它的边界在哪里。用户量少、压测机资源有富余、网络环境一致的三条都满足虚拟机数据就是可信的。5. 常见问题与排查技巧实录5.1 安装阶段三大高频故障故障一安装卡在“Starting LoadRunner相关服务”。原因一般是服务无法启动最常见的是SQL Server Express实例冲突。排查思路打开服务管理器手动启动“Micro Focus LoadRunner SQL Server 2022”服务看报什么错误。如果是数据库文件权限问题找到安装目录下的data文件夹右键属性 → 安全 → 给SYSTEM用户和当前用户完全控制权。如果是已经存在同名SQL Server实例冲突在服务里改实例名称或者在安装包里的配置文件里跳过实例安装。故障二社区版License激活时提示“Unable to connect to license server”。这个问题的核心是License Server服务没起来。依次排查服务管理器确认“Micro Focus License Server”处于运行状态如果没运行手动启动报错的话检查C:\Program Files\Micro Focus\License Server目录是否存在。如果服务都正常但激活还是失败检查一下虚拟机系统时间有些License校验依赖时间同步差太多会直接失败。故障三打开LoadRunner主界面报错“Component not found”。这是典型的被杀毒软件清理了DLL导致的。我的标准处理办法卸载LoadRunner重装之前先关掉杀软实时防护重装完成后把LoadRunner安装目录加入杀软白名单以后再用就不会有问题了。如果觉得重装太麻烦也可以试试用安装包里的修复功能Control Panel → 卸载/更改程序 → LoadRunner → Repair。5.2 录制与回放阶段典型问题问题一录制后回放失败报错“Cannot initialize driver”。这个报错在录制无线、登录类脚本时比较常见。原因是VuGen的驱动在生成脚本时遇到无法识别的新协议或某个协议的子组件没有完整安装。解决方案打开VuGen的“工具 → 协议”面板确认当前协议是否已启用在脚本编辑页面的“录制设置 → 高级”里勾选“回放前自动编译”。另一个冷门但常见的原因是系统环境变量PATH太长了Windows对PATH的长度有限制而LoadRunner会向PATH追加多个目录路径过长会导致注入驱动失败手动清理一下PATH即可。问题二录制的脚本很长但真正有价值的请求只有几个。正常尤其是录制网页操作时浏览器会发出大量静态资源请求和Ajax轮询请求VuGen都会记录下来。处理方式关掉不必要的请求在树形图里右键删除保留关键的业务请求。然后用“事务Transaction”把登录、查询、提交等几个关键动作按事务圈起来这样Analysis报告里就能看到每个事务的响应时间分布定位瓶颈更快。事务起点是lr_start_transaction(login)终点是lr_end_transaction(login, LR_AUTO)。5.3 场景运行与结果分析阶段经验问题一场景跑起来了但Analysis报告里错误率很高全是“HTTP 500”。不要第一时间怀疑压测机先看日志里报500的URL是哪一个。如果是某几个特定请求持续500大概率是目标服务器没扛住或数据有问题如果是所有请求都500可能是LoadRunner脚本里设置了错误的基地址或者压测机到目标服务器的网络有波动。经验是先看单次回放是否正常再跑小并发10个Vuser进行对比锁定是脚本问题还是性能问题。问题二场景跑了一半Controller报“Load Generator Machine (localhost) failed to connect”。这个问题的根源通常是负载生成器进程意外的崩溃。常见原因有三个虚拟用户数分配超出可用内存、场景设计里多个组同时初始化导致资源峰值、以及Controller所在虚拟机的防火墙重置。解决思路减少虚拟用户数重启虚拟机再跑在Controller的“负载生成器管理”里手动重启那个失败的Load Generator。5.4 虚拟机专项问题速查问题表现根因解决办法虚拟机内访问目标服务器很慢网卡类型不对在VMware设置里换成VMXNET3网卡LoadRunner安装卡在服务启动SQL Server实例冲突/权限不足给data目录加权限重装干净实例压测时压测机CPU飙满虚拟用户数超过虚拟机承载降低虚拟用户数或用物理机压测录制时浏览器打不开VMware Tools未装/浏览器扩展冲突装VMware Tools手动指定Chrome路径性能测试结果波动大宿主机其他负载影响压测时宿主机别跑大型任务给虚拟机固定分配CPU6. 扩展用法与效率提升建议6.1 快照技术在工作中的妙用VMware的快照功能放在LoadRunner环境上其实是效率神器。我自己的工作习惯是装好系统、装好LoadRunner、验证环境无误后先打一个干净环境的快照。之后不管是测试LoadRunner的新功能、安装不同版本的补丁、还是同事借用虚拟机做实验每次折腾完都用“返回到快照”还原到干净状态十分钟就回到基准环境。还有一种用法是把LoadRunner Controller安装在物理机上Load Generator安装在多个虚拟机里。一台物理机的资源有限但你可以在宿主机上开三四个虚拟机每个分配2核4GB分别作为Load Generator通过Controller统一调度把“假装有一堆施压机”的效果拉满。对于小项目的压测这套方案性价比很高。6.2 把虚拟机当性能测试沙盒除了跑LoadRunner本身虚拟机还可以作为整个性能测试体系的沙盒比如在另一个虚拟机里搭被测系统TomcatMySQL再在LoadRunner虚拟机里压它完全隔离环境跑通全链路。这套条件在个人电脑上就能实现只要宿主机内存够32GB以上CPU核心数8个以上跑起来一点都不卡。我在培训新人的时候就常用这套方案——让学员自己搭一整套被测环境加压测工具理解CLient/Server模型比只看PPT强太多。顺便提一下虚拟机的网络模式选择。VMware有三种常见模式桥接模式、NAT模式、仅主机模式。做性能压测时推荐桥接模式它让虚拟机跟物理机在同一局域网网络路径最直接压出来的数据贴近真实网络。NAT模式会引入一层地址转换在大量并发下丢包率可能偏高结果不准仅主机模式只适合压测虚拟机内部服务比如在同一台虚拟机上既装LoadRunner又装被测程序。6.3 系统学习LoadRunner的路线建议如果你是新手我的建议是不要一上来就追求录制复杂的业务脚本先按这个顺序循环练习用VuGen录制一个静态页面 → 回放 → 用Controller跑50个虚拟用户跑5分钟 → 用Analysis看报告中的事务响应时间、吞吐量、错误率 ← 就这三个动作重复练直到能把每个环节的配置项都摸明白、敢说清楚每个参数含义为止。然后把重心放在“看懂报告”上Analysis报告不是看完了完事要看几个核心指标的关系平均事务响应时间Average Response Time、每秒事务数TPS、每秒点击率Hits per Second、错误数。这四个数据联合起来才能定位问题TPS上不去但响应时间飙升说明存在瓶颈点击率很高但TPS很低说明服务端处理慢错误数集中在某一时间段要对应回看该时间段的服务器监控数据。写在最后的一点心得用虚拟机跑LoadRunner这件事说起来是个技术问题其实也折射出一个理念性能测试工具的选择要匹配资源和目标不是配置越高越好也不是越轻量越好。虚拟机能让你用最低成本搭建一套完整的性能测试学习环境减少环境干扰带来的不确定性这是它的最大价值。但任何工具都有边界虚拟化带来的性能开销真实存在认清边界之后虚拟机完全能胜任绝大多数日常测试工作。我个人在实际操作中的体会是虚拟机方案最大的坑往往不是LoadRunner本身而是基础环境——很多人在安装阶段就放弃了最后发现是杀毒软件、防火墙、虚拟机配置这些看似无关的小事。所以如果你卡住了先冷静下来把“物理机资源是否够、虚拟机配置是否合理、安装目录是否干净、服务是否全启动”这四件事检查一遍90%的问题都能找到答案。环境理顺后LoadRunner的学习曲线远没有想象中陡峭录一个脚本、跑一轮压测、出一份报告这套流程跑通一次你对性能测试的理解就能上一个台阶。
返回列表