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

使用HttpClient精准测量REST API响应时间(排除TLS、DNS开销验证SLA)

解决方案

关于EventSource事件关联的性能顾虑

你担心的ConcurrentDictionary存储ID带来的性能影响完全可以忽略。System.Net.Http EventSource发布的所有和单个请求绑定的事件,都会携带同一个long类型的RequestId字段,不需要做复杂的GUID字节运算,直接用这个RequestId作为字典key即可。单请求仅涉及1次写入、1次读取删除操作,都是纳秒级耗时,即使在QPS过万的生产环境下,也不会产生可观测的性能损耗。

事件关联实现要点

  • 监听System.Net.Http EventSource的RequestContentStop和ResponseContentStop事件
  • 收到RequestContentStop事件时,将对应RequestId和事件的时间戳存入ConcurrentDictionary
  • 收到ResponseContentStop事件时,根据RequestId取出对应RequestContentStop的时间戳,二者差值就是你需要的、排除了DNS解析、TLS握手、连接建立耗时的纯请求响应时长
  • 额外增加定时清理逻辑,清除字典中存在时间超过HttpClient超时阈值的条目,避免请求异常中断导致的内存泄漏

更轻量的替代方案

如果不想自己维护事件监听和匹配逻辑,可以直接订阅.NET内置的DiagnosticListener诊断事件,这套体系已经封装好了请求全链路的各个阶段数据,直接订阅System.Net.Http.HttpRequestOut.Stop事件,对应上下文已经包含了请求各阶段的耗时统计,可以直接提取你需要的指标,不需要自行做事件匹配。

内容的提问来源于stack exchange,提问作者Oleg Golovkov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:36:03