Salesforce性能测试中Cometd调用响应慢及403未知客户端问题求助
LoadRunner脚本层面调整方案:解决Salesforce Cometd调用的403错误与响应超时问题
一、针对403「Unknown client」错误的脚本调整
- 动态关联Client ID:Cometd的
client id是在/meta/handshake握手请求的响应中生成的临时标识,绝对不能硬编码示例中的####。在LoadRunner中使用web_reg_save_param_ex函数提前捕获该值,示例代码:
web_reg_save_param_ex( "ParamName=cometd_client_id", "LB=\"clientId\":\"", "RB=\"", "Search=ResponseBody", LAST);
将捕获到的{cometd_client_id}参数替换到后续/meta/connect请求的JSON中,确保每次请求的客户端身份有效。
- 修正请求参数格式:示例请求中的
"connection type"是错误的参数名,符合Salesforce Cometd规范的参数应为"connectionType"(无空格的驼峰格式)。参数名错误会导致服务端无法识别连接类型,直接触发身份校验失败,必须修正JSON结构。 - 确保会话标识完整传递:除了
sdfc-streamCookie,还要验证Authorizationtoken的时效性(避免使用过期token),同时确保LoadRunner自动关联或手动添加的Cookie包含所有必要会话字段(如sid、sfdc-uid等),防止会话中断导致客户端身份丢失。
二、针对响应时间过长的脚本调整
- 适配长轮询超时设置:Cometd长轮询请求会保持连接直到有事件推送或服务端超时,LoadRunner默认的请求超时可能不匹配该场景。使用
web_set_sockets_option函数设置合理的超时时间(建议匹配Salesforce服务端的长轮询超时,通常30-60秒),示例代码:
web_set_sockets_option("TIME_OUT", "60000"); // 设置超时为60秒
避免因客户端提前中断请求导致响应时间统计异常,或服务端未完成推送就被终止。
- 优化并发请求逻辑:如果脚本中存在多个Cometd请求并行,需调整LoadRunner的并发处理策略。对于Web HTTP/HTML协议,可通过设置多线程组或调整
Run-Time Settings中的并发参数,避免单线程串行处理长轮询请求导致整体响应时间被拉长。 - 精简关联与参数化逻辑:冗余的正则表达式关联或不必要的参数化会增加脚本执行开销。仅保留
client id等必要参数的关联,优化正则表达式的边界匹配逻辑,减少脚本执行时的CPU与内存消耗,提升运行效率。
额外验证建议
在/meta/connect请求后添加检查点,验证响应中的"successful": true字段,示例代码:
web_reg_find( "Search=ResponseBody", "SaveCount=cometd_success_count", "Text=\"successful\": true", LAST);
一旦检查失败,可快速定位客户端身份失效的问题,避免错误蔓延。
内容的提问来源于stack exchange,提问作者Aayushi
相关产品推荐
相关产品推荐

