【问题标题】:Do ping requests put a load on a server?ping 请求会给服务器带来负担吗?
【发布时间】:2009-12-18 19:06:33
【问题描述】:

我有很多客户(大约 4000 个)。 每个客户端每 2 秒 ping 一次我的服务器。 这些 ping 请求是否会给服务器增加负载并使其变慢?

如何监控此负载? 现在服务器响应缓慢,但处理器几乎处于空闲状态,可用内存还可以。 我在 Ubuntu 上运行 Apache。

【问题讨论】:

  • 您的意思是 ICMP ping 还是更高级别的东西?
  • 是的,ICMP ping。 ping 由 WinAPI 的 InternetCheckConnection 函数发送。

标签: apache networking


【解决方案1】:

假设您的意思是 UDP/ICMP ping 只是为了查看主机是否处于活动状态,那么 4000 台主机的负载可能并不大,而且相当容易计算。 CPU 和内存方面,ping 由您的内核处理,并且应该进行优化以不占用太多资源。因此,您需要查看网络资源。最关键的一点是,如果你有一个半双工链接,因为你们所有的主机都很健谈,你会导致很多冲突和重传(和掉线)。如果链路都是全双工的,让我们计算一下服务器所需的实际带宽量。

  • 4000 个客户端 @2 秒
  • 每个 ping 在线路上是 72 字节(32 字节数据 + 8 字节 ICMP 报头 + 20 字节 IP 报头 + 14 字节以太网)。 * 如果您使用 vlan 标记或基于 UDP 的 ping,您可能会有一些额外的开销
  • 如果我们可以假设 ping 是随机分布的,那么每秒 2000 次 ping @ 72 字节 = 144000 字节
  • 乘以 8 得到 Bps = 1,152,000 bps 或大约 1.1Mbps。
  • 在 100Mbps 局域网上,仅用于 ping 的利用率约为 1.1%。

如果这是一个局域网环境,我会说这基本上是没有负载的,如果它通过一个 T1 那就是一个巨大的负载量。所以你基本上应该对哪些网络链接也可能是瓶颈进行相同的计算。

最后,如果您没有使用 ICMP ping 检查主机,而是使用应用程序级别的 ping,那么您将承担所使用协议的所有开销,并且 ping 需要一直向上协议栈,你的应用程序需要响应。同样,这可能是非常小的负载,也可能是巨大的,具体取决于实现细节和网络速度。如果主机空闲,我怀疑这对你来说是个问题。

【讨论】:

    【解决方案2】:

    是的,他们可以。 ping 请求不会给 CPU 带来太多负载,但它肯定会占用带宽和名义上的 CPU。

    如果您想对此进行监控,您可以使用tcpdumpwireshark,或者设置防火墙规则并监控它匹配的数据包数量。

    【讨论】:

      【解决方案3】:

      除了带宽之外的另一个问题是 CPU。如果 ping 被定向到 CPU 进行处理,那么成千上万的这些都可能导致任何 CPU 负载。值得监控 - 但正如你所说,你的几乎是空闲的,所以它可能能够应付。不过值得牢记。

      根据客户端的不同,ping 数据包的大小可能不同 - 它们的有效负载可能只是“aaaaaaaaaa”,但有些可能是“thequickbrownfoxjumpedoverthelazydog” - 这显然是对带宽的进一步要求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 1970-01-01
        • 2010-12-19
        相关资源
        最近更新 更多