我目前正在进行一些网络编程,并且有一些关于超时的问题。
执行ping时是否建议超时?
此外,在建立URL连接时是否建议超时?
编辑:在我的情况下,使用ping,我只是想看看设备是否连接到网络。通过URL连接,我试图打开一个URL并从中获取文本。
由于
答案 0 :(得分:2)
这取决于您要连接的位置。
举个例子:如果你连接到同一个数据中心或同一个机架的另一个盒子,只有很少的跳转(路由器,交换机,防火墙......),通常应该在一秒钟内建立连接 - 因此不需要30秒超时(我将其设置为5秒)。
如果你连接到另一个大陆的盒子,这是一个完全不同的故事。数据包丢失,拥挤的路由和连接可能会降低连接速度。 30秒或60秒的超时听起来很公平。
此外,你应该考虑你的客户是否真的要等60秒。再举一个例子,如果您连接到Web服务以便向用户提供HTTP请求。等待60秒没有多大意义,因为用户无论如何都会取消/离开请求。此外,这种阻塞服务调用可能会导致大量等待线程填满服务器的线程池 - 这不是一件好事。在这种情况下,我会将超时设置为10秒,并且一旦Web服务变慢,就会冒一些“服务不可用”或类似页面的风险。
答案 1 :(得分:0)
一般情况下,我为请求设置了60秒的超时时间(如果您通过请求传输了多MB文件,则会有所不同)。
有两种类型的ping。在请求时实际ping可ping组件的活动ping和在后台ping组件的被动ping,并在请求时返回缓存状态。在我的应用程序中,我仍将这些超时设置为60秒,但如果您认为您想要快速失败,请随意设置较小的数字。
答案 2 :(得分:0)
您对网络的行为有何期待?这将决定你如何看待连接的行为以及何时会出现超时。
e.g。你的ping执行了多少次网络跳转?这些设备在正常情况下的加载程度如何?