ping 请求会给服务器带来负载吗?

问题描述 投票:0回答:3

我有很多客户(大约4000个)。 每个客户端每 2 秒 ping 一次我的服务器。 这些 ping 请求会给服务器带来负载并减慢速度吗?

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

apache networking
3个回答
7
投票

假设您的意思是 UDP/ICMP ping 只是为了查看主机是否处于活动状态,4000 个主机可能负载并不大,并且相当容易计算。 CPU 和内存方面,ping 由内核处理,并且应该进行优化以不占用太多资源。因此,您需要查看网络资源。最关键的一点是,如果您有半双工链路,因为所有主机都很活跃,您将导致大量冲突和重新传输(以及 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 Lan 上,仅 ping 的利用率约为 1.1%。

如果这是一个 LAN 环境,我会说这基本上根本没有负载,如果它经过 T1 那么它是一个巨大的负载。因此,您基本上应该对哪些网络链接也可能成为瓶颈进行相同的计算。

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


1
投票

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

如果您想监控这一点,您可以使用 tcpdumpwireshark,或者设置防火墙规则并监控其匹配的数据包数量。


1
投票

除了带宽之外的另一个问题是CPU。如果将 ping 定向到 CPU 进行处理,则数千个 ping 可能会对任何 CPU 造成负载。它值得监控 - 但正如你所说,你的几乎闲置,所以它可能能够应对。不过值得记住。

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

© www.soinside.com 2019 - 2024. All rights reserved.