我目前正在做一些网络编程,有几个关于超时的问题。
执行ping操作时是否有建议的超时时间?
另外,在进行URL连接时是否有建议的超时时间?
编辑:在我的例子中,使用ping命令,我只是尝试查看设备是否连接到网络。通过URL连接,我尝试打开一个URL并从中获取文本。
谢谢
发布于 2010-03-12 01:12:52
这取决于您要连接到的位置。
举个例子:如果您连接到同一数据中心甚至同一机架中的另一台计算机,则只有很少的跳跃(路由器、交换机、防火墙等)连接通常应该在一秒内建立-因此不需要30秒的超时(我将其设置为5秒)。
如果你连接到另一个大陆上的盒子,那就完全不同了。丢包、拥挤的路由和连接可能会减慢连接速度。30或60秒的超时时间听起来很合理。
此外,如果你的客户真的想等待60秒,你应该考虑一下。再举一个例子,如果您连接到web服务以便为来自用户的HTTP请求提供服务。等待60秒没有多大意义,因为用户无论如何都会取消/离开请求。此外,这种阻塞服务调用可能会导致大量等待线程填满服务器的线程池-这不是一件好事。在这种情况下,我将超时设置为10秒,而不是冒险在web服务变慢时立即向用户抛出一些“服务不可用”或类似的页面。
发布于 2010-03-12 00:50:04
通常,我将请求的超时设置为60秒(如果您通过请求流式传输许多MB的文件,则会有所不同)。
有两种类型的ping。主动ping,在请求时实际ping可ping组件;被动ping,在后台ping组件,并在请求时返回缓存状态。在我的应用程序中,我仍然将这些超时设置为60秒,但是如果您认为您想要快速失败,请随意设置一个较小的数字。
发布于 2010-03-12 00:57:16
您期望您的网络表现如何?这将决定您如何看待连接的行为,以及您预计何时会超时。
例如,您的ping将执行多少次网络跳跃?在正常情况下,这些设备的负载情况如何?
https://stackoverflow.com/questions/2426877
复制相似问题