我正在运行一个连接到后端数据库的 http web 服务器。现在,如果客户端生成 100 个线程并尝试通过负载均衡器联系该 web 服务器,则会出现大约 32ms 的延迟。但是,在相同的设置下,如果我有 2 个 web 服务器(但连接到同一个数据库),而不是一个 web 服务器。负载均衡器使用循环算法在这两个 web 服务器之间平衡负载。现在我运行相同的客户端,它生成相同的 100 个线程,但在这种情况下延迟接近 55ms。我以为更多的 web 服务器意味着更好的性能,但事实恰恰相反。有人能帮我理解这种情况吗?谢谢!
编辑:有关负载均衡器的信息 - 我正在使用 haproxy 负载均衡器。
这是配置文件:
global
maxconn 4096
pidfile /var/run/haproxy.pid
daemon
defaults
mode http
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen GALAXY 10.76.2.15:80
mode http
cookie GALAXY insert
balance roundrobin
option httpclose
option forwardfor
option nolinger
stats enable
stats auth myuser:mypass
server EARTH 10.76.2.107:80 cookie GALAXY_SERVER_01 check
即使在正常情况下,我也可以通过负载平衡器访问单个 Web 服务器。我不知道为什么添加另一个 Web 服务器会造成额外的延迟。-Sethu
答案1
负载均衡器会增加吞吐量的一些延迟,但这不会改变。
当您开始达到足以淹没单个服务器的并发量时,“更好的性能”就会发挥作用。使用负载平衡器,您可以将负载分散到整个服务器群。这就是负载平衡器提供的“更好的性能”发挥作用的地方。