凌峰创科服务平台

LoadRunner如何精准测试服务器性能?

LoadRunner 服务器性能测试完整指南

LoadRunner 的核心思想是 “模拟”,它通过模拟成千上万的虚拟用户,向服务器发送业务请求,从而在真实环境下测试服务器的性能、弹性和可靠性。

LoadRunner如何精准测试服务器性能?-图1
(图片来源网络,侵删)

第一部分:核心概念与测试流程

在动手之前,必须理解 LoadRunner 的三个核心组件和标准的测试流程。

LoadRunner 的三大核心组件

  • Virtual User Generator (VuGen - 虚拟用户生成器):

    • 作用: 录制用户的业务操作,将其转化为可执行的脚本(如 C, C++, Java, .NET, Python 等)。
    • 核心功能: 录制、编辑、参数化、关联脚本,确保脚本能够独立、真实地模拟用户行为。
  • Controller (控制器):

    • 作用: 测试的“总指挥”,它负责管理、执行和监控整个性能测试。
    • 核心功能:
      • 定义虚拟用户数量(负载模式:如 Vusers、Ramp-up)。
      • 设计场景(Scenario),例如运行多脚本、设置混合业务流。
      • 启动、停止和监控测试。
      • 集中监控系统资源(如 Load Generator 机的 CPU、内存)。
  • Analysis (分析器):

    LoadRunner如何精准测试服务器性能?-图2
    (图片来源网络,侵删)
    • 作用: 测试完成后的“数据分析专家”,它收集并分析 Controller 生成的数据,生成图表和报告。
    • 核心功能:
      • 展示关键性能指标图表(如 TPS、平均响应时间、错误率)。
      • 分析系统瓶颈(服务器、数据库、网络)。
      • 生成专业的测试报告。

标准的性能测试流程

一个完整的 LoadRunner 测试通常遵循以下六个步骤:

  1. 计划测试:

    • 明确目标: 测试的目的是什么?(测试系统能承受多少并发用户?找出最大 TPS?测试数据库性能?)
    • 确定场景: 定义要测试的业务场景(如:用户登录、商品浏览、加入购物车、下单支付)。
    • 识别指标: 确定衡量性能的关键指标(如:响应时间、TPS、CPU 使用率、内存占用、错误率)。
    • 准备环境: 准备干净、稳定的服务器和测试环境。
  2. 录制脚本:

    • 使用 VuGen 录制用户在业务系统上的关键操作流程。
    • 登录 -> 搜索商品 -> 查看详情 -> 退出。
  3. 完善脚本:

    LoadRunner如何精准测试服务器性能?-图3
    (图片来源网络,侵删)
    • 参数化: 将固定的数据(如用户名、密码、搜索关键词)替换为参数,让每个虚拟用户使用不同的数据,更真实地模拟大规模用户。
    • 关联: 从服务器响应中提取动态数据(如 Session ID, Token),并将其作为后续请求的参数,这是脚本能否成功运行的关键。
    • 添加事务: 将业务操作(如下单)定义为“事务”,用于精确测量该操作的性能。
    • 添加检查点: 验证服务器返回的响应内容是否正确(如页面是否包含“登录成功”)。
    • 添加思考时间: 模拟真实用户在操作之间的停顿时间,使负载更真实。
  4. 设计场景:

    • 在 Controller 中,创建一个场景。
    • 负载模式选择:
      • 手动场景: 精确控制虚拟用户的数量和启停时间。
      • 目标场景: 设定一个性能目标(如“将 TPS 维持在 100”),LoadRunner 会自动调整虚拟用户数量来达到目标。
    • 设置负载: 选择要运行的脚本,设置虚拟用户总数、Ramp-up(用户增加的速度)和持续时间。
    • 配置资源: 添加 Load Generator 机器(运行虚拟用户的物理机或云主机),并监控其资源使用情况,确保瓶颈不在测试机本身。
  5. 执行并监控:

    • 启动场景,让 LoadRunner 开始模拟虚拟用户。
    • 在 Controller 的实时监控窗口中,密切关注以下图表:
      • Running Vusers: 当前正在运行的虚拟用户数。
      • Transactions per Second (TPS/Throughput): 每秒系统处理的事务数。这是最重要的性能指标之一
      • Average Transaction Response Time: 事务的平均响应时间。
      • Hits per Second: 每秒对服务器的点击数(HTTP 请求数)。
      • Errors per Second: 每秒发生的错误数。
      • Server Resources: 服务器的 CPU、内存、磁盘 I/O、网络 I/O 使用率。
  6. 分析结果:

    • 测试结束后,将 Controller 生成的数据导入 Analysis。
    • 分析趋势: 观察 TPS 和响应时间曲线,随着用户增加,TPS 会上升,达到一个峰值后开始下降,同时响应时间急剧上升,这个峰值点就是系统的性能拐点。
    • 定位瓶颈: 结合服务器资源图表(CPU 100%?内存溢出?),判断瓶颈所在。
      • TPS 下降,但 CPU 和内存都很低,可能是应用代码或数据库瓶颈。
      • CPU 100% 而 TPS 不再增长,说明服务器计算能力已达上限。
      • 如果内存持续增长并最终崩溃,说明存在内存泄漏。
    • 生成报告: 将分析结果整理成图文并茂的正式报告,给出结论和优化建议。

第二部分:实战步骤详解(以 Web HTTP/HTML 为例)

假设我们要测试一个电商网站的“用户登录”和“商品搜索”两个功能。

步骤 1:录制脚本 (VuGen)

  1. 打开 VuGen,创建一个新的 Web - HTTP/HTML 脚本。
  2. 点击“录制”按钮,设置浏览器(通常使用 IE 内核)。
  3. 在浏览器中,手动执行要测试的业务流程:
    • 打开电商网站首页。
    • 点击“登录”按钮,输入用户名和密码,点击“登录”。
    • 登录成功后,在搜索框输入“手机”,点击“搜索”。
    • 查看搜索结果页。
  4. 停止录制,VuGen 会自动生成一系列 web_urlweb_submit_data 等函数来描述你的操作。

步骤 2:完善脚本 (VuGen)

  1. 参数化:

    • 找到登录的用户名和密码(如 web_submit_data 中的 "username=perf_test_user")。
    • 选中变量值,右键 -> Replace with a parameter -> 选择参数类型(如 File)。
    • 创建一个文本文件(如 users.txt),每行一个用户名,这样每个虚拟用户会读取不同的用户名。
  2. 关联:

    • 这是最关键的一步,很多登录系统会返回一个 Session IDToken,后续请求必须带上这个 ID。
    • 在 VuGen 菜单栏选择 Recording Options -> Correlation
    • 点击 Auto Correlation Options,勾选 web_reg_save_param 函数。
    • 重新运行一遍脚本(Replay),VuGen 会自动识别动态值并创建关联函数。
    • 手动检查:在脚本中找到登录请求的响应,看看是否有动态值,如果没有被自动关联,就需要手动添加 web_reg_save_param 函数来捕获它。
  3. 添加事务:

    • 在脚本编辑区,将登录操作相关的代码块前后,分别插入 lr_start_transaction("login");lr_end_transaction("login", LR_AUTO);
    • 同样,为“商品搜索”操作添加一个事务 lr_start_transaction("search_product");
  4. 添加思考时间:

    • 选中操作之间的代码(如登录和搜索之间),右键 -> Insert -> think time
    • 设置一个合理的随机时间(如 2-5 秒),模拟用户浏览页面的时间。

步骤 3:设计场景

  1. 打开 Controller
  2. 创建一个新的场景。
  3. Scenario Groups 中,将你刚才创建的脚本拖入。
  4. Scenario Schedule 中,设置负载模式:
    • 选择 Goal Oriented Scenario
    • Goal Type 中选择 Transactions per Second
    • 设置目标值为 50,然后点击 Add
    • 这样 LoadRunner 会自动调整虚拟用户数,试图让系统的 TPS 达到 50。
  5. Load Generators 中,添加一台或多台运行 LoadRunner Agent
分享:
扫描分享到社交APP
上一篇
下一篇