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

高并发加载测试中Client调用触发TaskCanceledException且Polly重试策略未执行的问题咨询

高并发加载测试中Client调用触发TaskCanceledException且Polly重试策略未执行的问题咨询

各位大佬好,我最近在做高并发压测的时候碰到了一个棘手的问题,想过来请教下:

我的系统架构

  • 核心服务基于C#/.NET 6构建,是个包含多个Azure组件的复杂解决方案:有4个Azure服务触发器,它们都会调用一个运行在Azure HTTP Trigger上的API
  • 每个触发器最多跑30个并行会话,每个会话又包含多达10个处理任务,所有任务都会并发调用API来访问资源
  • 客户端用的是Flurl的无服务器默认配置,已经启用了HTTP/2;API端在统一域名下的不同路径都配置了Polly重试策略

压测场景与异常表现

  • 我用同技术栈写了个控制台应用作为压测工具,会循环调用启动处理的API多达1000次,同时让后端系统保持并发处理这些请求
  • 前800次调用基本都正常,但之后不管是控制台压测端还是Azure函数端,都会开始出现超时问题
  • 监控显示API的CPU和内存占用一直很低(<30%),虽然套接字的使用量有上升,但还在允许的限制范围内

错误详情

抛出的异常为:TaskCanceledException - "The operation was canceled."
内部堆栈跟踪如下:

at System.Net.Http.Http2Connection.Http2Stream.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
  at System.Net.Http.Http2Connection.Http2Stream.<ReadResponseHeadersAsync>d__74.MoveNext()
  at System.Net.Http.Http2Connection.<SendAsync>d__111.MoveNext()
  at System.Net.Http.HttpConnectionPool.<SendWithVersionDetectionAndRetryAsync>d__89.MoveNext()
  at System.Net.Http.DecompressionHandler.<SendAsync>d__16.MoveNext()
  at Microsoft.Extensions.Http.PolicyHttpMessageHandler.<SendCoreAsync>d__6.MoveNext()
  at Polly.Retry.AsyncRetryEngine.<ImplementationAsync>d__0`1.MoveNext()
  at Polly.AsyncPolicy`1.<ExecuteInternalAsync>d__23.MoveNext()
  at Microsoft.Extensions.Http.PolicyHttpMessageHandler.<SendAsync>d__5.MoveNext()
  at System.Net.Http.HttpClient.<<SendAsync>g__Core|83_0>d.MoveNext()

我的观察与疑问

  • 我发现这个错误出现时,配置的Polly重试策略完全没有触发,这让我怀疑请求根本没到达服务器,所以问题应该不是API端资源过载导致的
  • 我已经给微软提交了工单,但还是想问问,在客户端这边有没有什么排查方向或者可以优化的点?

备注:内容来源于stack exchange,提问作者Jose Luiz Berg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:48:08