2009-12-18 188 views
1

我有很多客户(约4000)。 每个客户端每2秒钟ping我的服务器。 这些ping请求可以对服务器施加负载并减慢速度吗?请求ping请求是否对服务器造成负担?

如何监控此负载? 现在,服务器的响应速度很慢,但处理器几乎空闲,并且可用内存不错。 我在Ubuntu上运行Apache。

+0

你的意思是ICMP ping或更高级别的东西? – skaffman 2009-12-18 07:07:30

+0

是的,ICMP ping。 Ping由WinAPI的InternetCheckConnection函数发送。 – Pavel 2009-12-18 07:31:39

回答

7

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

  • 4000客户端@2秒
  • 每个平是在电线(32点字节的数据+ 8个字节ICMP头+ 20字节的IP报头+ 14个字节的以太网)72个字节。 *如果您使用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将需要一直向上协议栈,并且您的应用程序需要做出响应。再次,这可能是一个非常小的负载,或者它可能是巨大的,这取决于实现细节和网络速度。如果主机闲置,我怀疑这对你来说是一个问题。

1

是的,他们可以。一个ping请求不会占用太多的CPU负载,但它肯定会占用带宽和标称数量的CPU。

如果你想监视这个,你可以使用tcpdumpwireshark,或者设置一个防火墙规则并监视它匹配的数据包数量。

1

除带宽之外的另一个问题是CPU。如果将一个ping命令指向CPU进行处理,则会有数千个命令导致任何CPU上的负载。这是值得监测的 - 但正如你所说的你几乎空闲,所以它可能会应付。值得记住,但。

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