诊断"请求超时"HttpExceptions

Jar*_*xon 25 asp.net httpexception request-timed-out

在StackOverflow上,我们每天都会看到一些"请求超时"异常.

事实:

  • 请求超时是默认的90秒
  • 仅在POST上发生
  • 发布的数据是文本,通常很小(<1KB),但可以达到几KB
  • 服务器变量中未捕获表单数据
  • 客户UA是多种多样的:IE5.5 - 7,Firefox 3.0.5,iPhone,Chrome
  • 客户位置多种多样:英国,法国,美国 - NC,OH,NE,IN

我们已经测试了基于服务器的超时(即使用Thread.Sleep),并且在异常日志中正确捕获所有表单变量 - 这使我们相信客户端在分配的时间内发送请求时遇到问题.

关于如何捕获/调试这种情况的任何想法都是非常受欢迎的!

Bar*_*gan 12

我在使用小型AJAX Web服务的生产服务器上遇到了同样的问题.在防火墙外部进行数据包捕获后,我们发现服务的POST来自两个TCP段,第二个段从未到达我们.(第一个数据包只包含标题,第二个丢失的数据包应该是json主体)所以基本上IIS只是坐在那里等待POST的其余部分.配置超时后,服务器向客户端发送RST数据包并记录"请求超时"错误 - 这是正确的行为.

我们试图在没有太多运气的情况下获得客户端repro,但在我们的情况下,这似乎是完全与网络相关的(或者可能是一些不喜欢帖子内容的"安全"软件).

  • 你有没有想出这个问题的解决方案,或者你只是忽略它们?我从合法请求中得到了很多(不是垃圾邮件). (4认同)

小智 9

如果您运行的是IIS 7,则可以使用" 失败的请求跟踪".我实际上并没有将它用于超时,我大多数时候已将其设置为仅捕获特定的http错误代码.但是我知道你可以把它转移到超过X时间的任何请求的痕迹.


tva*_*son 3

您是否尝试过通过 telnet 手动发布,但根本没有完成发布。我很想看看您是否可以复制您所看到的行为。鉴于该网站的性质,如果您故意收到一些格式错误的 POST 来尝试破解系统,我不会感到惊讶。

我有时注意到我需要重新启动 Safari 才能在某些操作挂起后再次工作,但我认为这是我的问题。