我有很多客户(大约 4000 个)。 每个客户端每 2 秒 ping 我的服务器一次。 这些 ping 请求是否会给服务器带来负载并降低服务器速度?
如何监控此负载? 现在服务器响应缓慢,但处理器几乎空闲,可用内存还可以。 我在 Ubuntu 上运行 Apache。
最佳答案
假设您的意思是 UDP/ICMP ping 只是为了查看主机是否处于事件状态,那么 4000 台主机的负载可能并不多,而且很容易计算。 CPU 和内存方面,ping 由您的内核处理,应该进行优化以不占用太多资源。因此,您需要查看网络资源。最关键的一点是如果你有一个半双工链接,因为你们所有的主机都很健谈,你会导致很多冲突和重传(和丢弃的 ping)。如果链路都是全双工的,让我们计算服务器所需的实际带宽量。
- 4000 个客户端@2 秒
- 每个 ping 在线路上有 72 个字节(32 字节数据 + 8 字节 ICMP header + 20 字节 IP header + 14 字节以太网)。 * 如果您使用 vlan 标记或基于 UDP 的 ping,您可能会有一些额外的开销
- 如果我们可以假设 ping 是随机分布的,那么每秒 2000 次 ping @ 72 字节 = 144000 字节
- 乘以 8 得到 Bps = 1,152,000 bps 或大约 1.1Mbps。
- 在 100Mbps 的局域网中,仅 ping 的利用率约为 1.1%。
如果这是一个 LAN 环境,我会说这基本上没有负载,如果它通过 T1,那么它就是一个巨大的负载。因此,您基本上应该对哪些网络链接也可能是瓶颈运行相同的计算。
最后,如果您不使用 ICMP ping 来检查主机,而是使用应用程序级别的 ping,那么您将承担所使用协议(protocol)的所有开销,并且 ping 需要一路向上协议(protocol)栈,你的应用程序需要响应。同样,这可能是一个非常小的负载,也可能是巨大的,具体取决于实现细节和网络速度。如果主机空闲,我怀疑这对您来说是个问题。
关于apache - ping 请求是否会给服务器带来负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1926773/