You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LoadRunner并行调用场景下单个GET接口响应时间的统计方法咨询

LoadRunner并行调用场景下单个GET接口响应时间的统计方法咨询

嗨,你提的这个问题确实是LoadRunner并行场景里常见的痛点——毕竟直接在web_concurrent_start/web_concurrent_end块里用lr_start_transaction和lr_end_transaction会因为并行执行的时序混乱,导致响应时间统计完全不准。你想到用web_reg_async_attributes是完全正确的方向,这个函数就是专门用来追踪并行/异步请求的各项指标的,我给你详细讲下用法和实操例子:

核心思路

web_reg_async_attributes是一个注册型函数,需要在并行请求发起前调用,通过唯一的ID绑定对应的请求,之后就能获取到该请求的响应时间、HTTP状态码等关键指标。我们可以把这些指标输出到日志,甚至手动封装成LoadRunner可识别的事务,方便在测试报告里查看统计数据。

完整代码示例

假设你的三个GET接口分别是/api/endpoint1、/api/endpoint2、/api/endpoint3,代码写法如下:

// 第一步:为每个并行请求注册异步属性(必须放在web_concurrent_start之前)
web_reg_async_attributes(
    "ID=Async_Req1",
    "URL=http://your-api-domain/api/endpoint1",
    LAST);

web_reg_async_attributes(
    "ID=Async_Req2",
    "URL=http://your-api-domain/api/endpoint2",
    LAST);

web_reg_async_attributes(
    "ID=Async_Req3",
    "URL=http://your-api-domain/api/endpoint3",
    LAST);

// 第二步:开启并行请求块
web_concurrent_start(NULL);

    // 发起第一个GET请求
    web_url("GET_Endpoint1",
        "URL=http://your-api-domain/api/endpoint1",
        LAST);

    // 发起第二个GET请求
    web_url("GET_Endpoint2",
        "URL=http://your-api-domain/api/endpoint2",
        LAST);

    // 发起第三个GET请求
    web_url("GET_Endpoint3",
        "URL=http://your-api-domain/api/endpoint3",
        LAST);

web_concurrent_end(NULL);

// 第三步:获取并处理每个请求的响应时间
char req1_rt[20], req2_rt[20], req3_rt[20];

// 从注册的属性中提取响应时间(单位:毫秒)
strcpy(req1_rt, lr_get_attrib_string("Async_Req1.ResponseTime"));
strcpy(req2_rt, lr_get_attrib_string("Async_Req2.ResponseTime"));
strcpy(req3_rt, lr_get_attrib_string("Async_Req3.ResponseTime"));

// 输出到日志,方便调试
lr_output_message("Endpoint1 响应时间:%s ms", req1_rt);
lr_output_message("Endpoint2 响应时间:%s ms", req2_rt);
lr_output_message("Endpoint3 响应时间:%s ms", req3_rt);

// 可选:封装为LoadRunner事务,便于在测试报告中统计
lr_start_transaction("Endpoint1_Response");
lr_end_transaction("Endpoint1_Response", atoi(req1_rt));

lr_start_transaction("Endpoint2_Response");
lr_end_transaction("Endpoint2_Response", atoi(req2_rt));

lr_start_transaction("Endpoint3_Response");
lr_end_transaction("Endpoint3_Response", atoi(req3_rt));

关键注意事项

  • 唯一ID:每个web_reg_async_attributes的ID必须唯一,不能重复,否则会导致指标匹配错误。
  • URL匹配:URL参数支持部分匹配(比如用通配符*),但尽量精准,避免误匹配到其他无关请求。如果接口URL有动态参数,也可以只写固定前缀部分。
  • 额外指标:除了ResponseTime,还可以获取Async_ReqX.Status(HTTP状态码)、Async_ReqX.Size(响应大小)等属性,帮助你排查请求异常问题。
  • 请求类型兼容:不管用web_url还是web_custom_request发起GET请求,这个方法都适用,只要保证注册函数在请求之前调用即可。

备注:内容来源于stack exchange,提问作者Narendra Sai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 08:53:08