我正在做一个项目,我们有一个 asp.net 网站,它使 asmx Web 服务调用到中间层。中间层的超时时间为 5 秒。我们注意到的一件事是,在流量高峰期,我们偶尔会在调用中间层时获得 http 400。
我们已经对其中一些 http 400 请求在网站层进行了网络跟踪,并注意到 1)3 次 tcp 握手速度很快 2)帖子的实际第一个数据包直到 5 秒后才启动。来自帖子第一个数据包的 ack 很快返回 3) 此后不久发送了一个 fin ack(可能是由于超时),之后 Web 服务层快速返回 http 400(400 可以理解为 post不完整)
有时在第 3 步之前会有额外的 5 秒延迟。知道为什么会发生这种情况吗?第 2 步对我来说是一个非常奇怪的行为。在发送帖子之前是否存在资源争用导致此延迟?也许某种可以以不同方式配置的资源?
我们使用标准的 .net 异步方法来发出请求 (BeginInvoke)。在我们调用 api 之前,帖子正文完全可以作为字符串使用。
我认为 cpu 可能太高了,导致 2 之前的延迟。以前有人见过吗?我知道这段时间cpu至少有80%。它可能会更高,但我们的性能计数器不是很高的分辨率。我们正在尝试在重现期间获得更高分辨率的性能计数器,以进一步确认这一点。如果您有任何其他想法,请告诉我!
谢谢!