LoadRunner负载测试随机出现Authentication required错误的技术求助
解决LoadRunner Enterprise中ASP.NET应用HTTP负载测试随机401未授权问题
问题概述
在LoadRunner Enterprise 2022 R2/Performance Center v12.63环境下,针对同一域名、同一Web服务器提供的ASP.NET应用做HTTP协议负载测试时,随机触发Error -26546(提示「Authentication required, please use web_set_user」)及HTTP 401(Unauthorized)错误。测试流程为登录→加载应用UI→执行搜索,负载生成器与被测应用无代理,脚本代理设为「无代理」,本地Vugen无法复现该问题,高低负载场景均会出现,服务器CPU占用仅5%。
1. 检查会话关联的完整性
- ASP.NET依赖
ASP.NET_SessionId或自定义会话标识维持登录状态,若脚本仅捕获首次登录的会话ID,未动态更新后续迭代的会话标识,或服务器在部分场景下刷新了会话ID但脚本未重新捕获,就会导致请求因会话失效触发401。 - 操作方案:在脚本中添加全局关联规则,针对所有请求响应头/响应体中的会话标识(如
Set-Cookie中的ASP.NET_SessionId)进行动态捕获,确保每个迭代的所有请求都携带最新的会话ID。 - 验证方式:查看出错请求的日志,对比成功请求的Cookie头,确认是否携带了有效的会话标识。
2. 强制添加web_set_user处理二次认证场景
- 部分ASP.NET应用的后端接口可能在随机场景下触发NTLM/Kerberos二次认证(比如应用池回收、会话超时提前、特定请求路径的权限校验逻辑),LoadRunner不会自动复用登录凭证,从而返回401。
- 操作方案:在脚本登录请求前添加
web_set_user函数,填入登录账号信息,格式如下:
若使用HTTPS,可配合添加web_set_user("DOMAIN\\username", "password", "aut_server:port");web_set_sockets_option("SSL_VERSION", "AUTO")确保认证协议兼容。
3. 调整HTTP连接复用策略
- LoadRunner默认的连接复用设置可能在连接频繁创建/销毁时,导致部分请求复用了已失效的连接,触发服务器返回401。
- 操作方案:在脚本中添加以下函数调整连接规则:
同时在负载生成器的web_set_sockets_option("MAX_CONNECTIONS_PER_SERVER", "8"); // 按需调整,避免单连接复用过度 web_set_sockets_option("KEEPALIVE", "1"); // 强制开启长连接runtime settings中,将「HTTP → 连接」里的「每个用户的最大连接数」设为5-10的合理值,避免连接耗尽或复用失效。
4. 排查服务器端会话缓存异常
- 服务器CPU仅5%说明无性能瓶颈,但ASP.NET的
FormsAuthentication或SessionState可能存在随机缓存失效问题,比如会话状态存储(InProc/StateServer)异常、应用池回收触发会话提前销毁。 - 操作方案:
- 检查服务器
web.config中sessionState的timeout设置,确保大于测试迭代周期; - 临时禁用应用池的自动回收规则,避免测试过程中触发回收;
- 启用服务器端会话日志,排查是否有会话被异常销毁的记录。
- 检查服务器
5. 修正脚本请求的依赖顺序
- 部分迭代中可能因请求执行顺序偏差(比如UI加载未完成就触发搜索请求),导致服务器判定会话未完全初始化,返回401。
- 操作方案:
- 在搜索请求前添加
web_reg_find函数,验证UI加载请求的响应中包含登录成功标识(如页面标题、用户名),确保UI加载完成后再执行搜索; - 调整
lr_think_time设置,避免思考时间过短导致请求顺序混乱。
- 在搜索请求前添加
内容的提问来源于stack exchange,提问作者JaxCoq
相关产品推荐
相关产品推荐

