【问题标题】:What is the Recommended Ping and URL Connection Timeouts?什么是推荐的 Ping 和 URL 连接超时?
【发布时间】:2011-01-26 11:31:21
【问题描述】:

我目前正在做一些网络编程,并且有几个关于超时的问题。

执行 ping 是否有建议的超时时间?

另外,在进行 URL 连接时是否有建议的超时时间?

编辑:就我而言,通过 ping,我只是想查看设备是否已连接到网络。通过 URL 连接,我试图打开一个 URL 并从中获取文本。

谢谢

【问题讨论】:

    标签: java network-programming timeout connection


    【解决方案1】:

    一般而言,我为请求设置了 60 秒的超时时间(如果您通过请求流式传输许多 MB 的文件,这会有所不同)。

    有两种类型的 ping。在请求时实际 ping 可 ping 组件的主动 ping 和在后台 ping 组件并在请求时仅返回缓存状态的被动 ping。在我的应用程序中,我仍然将这些超时设置为 60 秒,但如果您认为自己想要快速失败,请随意设置一个较小的数字。

    【讨论】:

      【解决方案2】:

      您希望您的网络表现如何?这将决定您如何看待连接的行为以及您何时期望超时。

      例如您的 ping 将执行多少次网络跳转?这些设备在正常情况下的负载如何?

      【讨论】:

      • 我对缺乏知识表示歉意。网络跳转和设备负载是什么意思?
      【解决方案3】:

      这取决于您要连接的位置。

      举个例子:如果你连接到同一个数据中心甚至同一个机架的另一个盒子,只有很少的跳转(路由器,交换机,防火墙,......),连接通常应该在一秒钟内建立 -因此不需要 30 秒超时(我将其设置为 5 秒)。

      如果你连接到另一个大陆的盒子,那就完全不同了。丢包、拥挤的路由和连接可能会减慢连接速度。 30 秒或 60 秒的超时听起来很公平。

      此外,您应该考虑您的客户是否真的想要等待 60 秒。再举一个例子,如果您连接到 Web 服务以服务来自用户的 HTTP 请求。等待 60 秒没有多大意义,因为用户无论如何都会取消/离开请求。此外,这种阻塞服务调用可能会导致大量等待线程填满服务器的线程池——这不是一件好事。在这种情况下,我会将超时设置为 10 秒,并且一旦 Web 服务变慢,就会冒着向用户抛出一些“服务不可用”或类似页面的风险。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-07
        • 1970-01-01
        • 2015-10-31
        • 2015-06-22
        • 2016-06-01
        • 1970-01-01
        • 2011-08-08
        • 2020-04-28
        相关资源
        最近更新 更多