LoadRunner是企业级的重型武器,功能全面但昂贵;JMeter是开源的瑞士军刀,灵活轻便但大型项目支持上需要更多人工调优。
定位和成本
LoadRunner由Micro Focus开发属于商业闭源软件。是老牌的性能测试标杆,价格昂贵,一般按并发虚拟用户数(VU)收费。
JMeter由Apache基金会开发属于开源免费软件。完全免费使用,社区活跃,插件生态丰富。
技术架构
通讯和并发模型
LoadRunner采用进程/线程混合方式。使用C语言编写引擎,支持Java、.NET等多种语言。在录制时能精确捕捉到网络端口、SSL握手等细节;回放时能模拟真实的浏览器缓存行为,且每个虚拟用户的内存占用相对较低。
JMeter采用纯Java多线程方式。工作在协议层不执行浏览器中的JavaScript渲染(除非配置额外的WebDriver插件,这会极大消耗资源)。随着线程数增加,单台机器上的JVM内存开销会急剧上升。
对大并发量的支撑能力
LoadRunner一台中高配服务器(如32G内存)一般能稳定支撑数千个虚拟用户。
JMeter在同样配置下,一般建议单机控制在500至1000个并发以内。更高压力需要部署分布式集群来分担。
脚本开发和易用性
录制和回放
LoadRunner录制功能强大,支持GUI界面(类似点击网页按钮)和API级别的录制,且对复杂协议(如SAP GUI、Citrix、Oracle Forms)有原生支持。
JMeter录制功能相对简易。主要依靠内置的HTTP代理服务器或Badboy等第三方工具录制,对前后端分离架构(如大量异步请求)的自动关联处理较弱。
脚本维护和参数化
LoadRunner自动关联功能出色,能自动识别和处理大多数动态会话ID。脚本编写类似写代码依赖专属IDE调试不如标准IDE方便。
JMeter关联和参数化都需要手动配置。其脚本是XML文件,可以用Git等工具进行版本控制和团队协作。
报告和分析能力
实时监控分析
LoadRunner监控和分析能力全面。Analysis组件能自动关联服务器性能标准(CPU、内存、IO)并生成详尽的图表能辅助定位数据库慢查询。支持实时趋势图也支持和Dynatrace等APM工具深度集成。
JMeter原生报告简单。HTML报告根据特定类模板生成,界面不如LoadRunner直观。一般需要结合Grafana和InfluxDB等可视化工具或手动分析日志文件。
协议支持
LoadRunner协议栈非常广,除了HTTP/HTTPS,还原生支持WebSocket、Citrix、SAP、RDP、MQTT等企业级复杂协议。
JMeter原生支持HTTP、JDBC、FTP、SMTP等通用协议。对于其他协议大多需要从Plugin Manager下载安装插件来扩展。
选型
选LoadRunner:
金融、电信交易系统,容错率极低。
需要对SAP、Citrix等专用协议做压测。
需要和APM工具深度集成做准确分析。
能承担高额的许可证费用。
选JMeter:
是互联网公司、初创团队的HTTP接口测试第一选择。
团队有Java能力,可以轻松开发定制插件或修改源码。
JMeter的纯命令行方式和丰富的API,使其能无缝嵌入自动化流程。
并发量在万人以内,通过几台机器做分布式压测就能满足。