繁体   English   中英

为什么HttpWebRequest ReadWriteTimeout设置为5分钟?

[英]Why is the HttpWebRequest ReadWriteTimeout set to 5 minutes?

HttpWebRequests的ReadWriteTimeout似乎默认为5分钟。

这有什么高的原因吗? 我试图将API调用的超时设置为10秒,但它旋转超过2分钟。

当我将其设置为30秒时,它现在在合理的时间内超时。

将此设置得太低是危险的吗?

我无法想象在我的应用中需要花费超过20-30秒的时间(小的2-30kb有效载荷)。

参考: http//msdn.microsoft.com/en-us/library/system.net.httpwebrequest.readwritetimeout.aspx

当然有5分钟超时的原因。 它看起来像这样:

在此输入图像描述

这个装置是国际射电天文研究中心使用的机器人磁带检索系统。 它存储32.5 PB的历史数据。 当其服务器获得HttpWebRequest时,机器会发送机器人以检索带有数据的磁带。 正如您可能想象的那,这需要一段时间。

十年前,这些系统在.NET设计时非常普遍。 与此同样,硬盘存储容量的不断改进使它们已经过时了。 虽然超过5 PB的SAN存储仍然可以为您提供相当大的资金。 如果速度不是必需的,那么磁带很难被击败。

很明显,当.NET不知道线路另一端发生了什么时,它不可能可靠地声明超时。 所以默认值很高。 如果您有充分的理由相信您的特定设置有上限,请不要犹豫,降低它。 确保它成为一个可编辑的设置,你无法预测未来。

您无法知道用户连接到您网站的连接速度。 作为此框架的创建者,您无法知道开发人员将托管的内容。 这个类已经存在于.NET 1.1中,所以很长一段时间。 那时用户速度也较慢。

找到一个好的默认值非常困难。 您不希望将其设置得太高以防止安全漏洞,并且您不希望将其设置得太低,因为这会导致一百万(夸大的)线程和请求中止请求。

对不起,我不能给你任何官方消息来源,但这是合理的。

为什么5分钟? 为什么不? JustAnotherUserYouMayKnow向你解释说得很好。 但是像往常一样,您可以自由地将此默认值更改为适合您的情况的值,因此请随意遵循Christian指出的路径。

当我们谈论数百万用户并且涉及数百万可能的情景时,设置默认值并不是一件容易的事。

引导线是它为什么它是5分钟并不是那么重要,而是你如何根据自己的需要调整它。

好吧,设置它可能会或可能会引入一系列问题。 由于您可以在合理的时间内到达网站,其他人可能不会。

一个完美的例子是Verizon,他们调用了一系列Proxy Servers ,可以大大降低连接速度。 我之所以提出这样一个例子的原因; 是我们的应用程序在抛出异常之前指定了一分钟的Timeout

我们的服务器没有大量请求的问题,它很容易处理它们。 但是,全世界的一些用户收到此错误: 错误10060

该问题可能来自不正确的Proxy ConfigurationInvalid Registry Key ,它实际上处理Timeout请求。

你认为一分钟确实足够快,但实际上并非如此。 与此客户特定网络一样,它不会足够快地通过数据 - 从而导致错误。

所以你问:

为什么HttpWebRequest ReadWrite Timeout默认为五分钟?

他们试图解释最低的共同点。

简单地说,每个网络和客户端在移动到所需位置时可能会有很大程度的流量或延迟。 如果它无法到达您的端口内的理想套接字请求,您的用户将遇到异常。

关于网络的一些非常重要的事情:

  • 某些配置的网络具有有限的跳数/生存时间。
  • 过滤数据和安全性过重的代理和防火墙可能会延迟您的流量。
  • 有些地区没有光纤或电缆高速。 他们可能依赖卫星或DSL。
  • 每种网络协议都不同。

这些是您必须考虑的一些变量。 如果我们在谈论互联网; 每个客户都有一个家庭网络; 连接到ISP; 它连接到互联网; 它连接到你。 因此,您可以聚合多种形式的流量。

如果我们谈论的是内联网,使用大多数现代技术,你的时间成为一个问题的可能性很小但仍然可能。

每台计算机也可以参与或引发问题。 在Windows 8中,为浏览器指定的默认Timeout是一分钟; 在某些情况下,这些用户可能会遇到与您的应用程序,您的网站或其他人的异常。 因此,您需要手动更改注册表中的ServerTimeOutTimeOut键以指定更长的值。

简而言之:

  • 客户端计算机可能会在您分配的时间内到达您的站点时出现问题。
  • 网络/ ISP可能会给某些用户带来问题。
  • 您的服务器可能配置不正确或没有分配适当的时间。

这些都是需要考虑的变量; 因为它们会影响对您的应用程序的访问。 不幸的是,在推出并且用户开始使用您的网站之前,您不会确定。

不幸的是,你不知道你指定的时间是否足够; 但它默认为更高的数字,因为全世界有太多的变化,它试图考虑最低的共同点。 因为您的目标是尽可能多的人。

顺便说一句非常好的问题,以及一些很好的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM