减少负载均衡器带来的延迟

减少负载均衡器带来的延迟

我目前在 Apache 中使用mod_proxy_balance负载平衡。我有一个客户端模拟器,它创建了 100 个线程并模拟用户活动,例如浏览网站。我尝试让客户端直接与 Web 服务器通信,也可以通过负载平衡器通信。以下是我发现的结果。

当客户端直接与网络服务器对话时:

  • 延迟 = 28ms

当客户端通过负载均衡器与 Web 服务器通信时(只有一个后端 Web 服务器):

  • 延迟 = 53 毫秒

当客户端通过具有两个后端 Web 服务器的负载均衡器与 Web 服务器通信时:

  • 延迟 = 113 毫秒

延迟不断增加,有没有办法降低延迟?提供令人满意的 SLO 是一个非常重要的方面。

答案1

您应该切换到像 ha_proxy 这样的负载均衡器,它比 mod_proxy_balancer 更适合并且性能更好。

mod_proxy_balancer 效率低下,且存在许多错误。

答案2

我认为 mod_proxy_balancer 不是epoll基于系统的,但最好检查一下。如果它不是基于epoll系统调用,则此延迟的原因很明显,select系统调用和 Apache 同步处理模型不是适合平衡的工具。您应该尝试使用 HAProxy 或 nginx。

答案3

确实,使用更好的负载平衡器。您的 Web 服务器非常擅长处理请求,而不是到处代理它们。好的负载平衡器对于现有连接具有亚毫秒范围内的数据包延迟,并且不应仅因为有多个后端而增加延迟。

我用独立性虚拟服务器我会尽可能地使用它来进行负载平衡,因为它速度快而且效率极高。不过,如果这对你来说有点难以承受,你至少可以使用 haproxy 为你的后端提供高质量的负载平衡。

相关内容