我正在尝试使用haProxy进行简单的负载平衡。我的配置:
global
log /dev/log local0
log 127.0.0.1 local1 notice
maxconn 200000
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
retries 3
option redispatch
maxconn 200000
timeout connect 5000
timeout client 50000
timeout server 50000
frontend front
bind *:80
mode http
default_backend back
backend back
mode http
balance roundrobin
option httpclose
option forwardfor
server webserver01 127.0.0.1:5001 check
server webserver02 127.0.0.1:5002 check
server webserver03 127.0.0.1:5003 check
server webserver04 127.0.0.1:5004 check
server webserver05 127.0.0.1:5005 check
server webserver06 127.0.0.1:5006 check
listen sts *:1936
mode http
stats enable
stats uri /
我有六个Flask实例,每个根据配置在不同的端口上。
在Flask中,函数只有time.sleep(5)并返回。
当我在浏览器中打开haproxy IP时 - 它正在运行 - 我的roundrobin策略正在运行。
但是当我用这个IP打开3个或更多页面时,我收到了奇怪的情况。我认为haProxy应该将流量重定向到我的一个Flask实例,但是当我第一次在浏览器中打开此IP并且我正在等待响应(在Flask中睡眠)并打开第二页时,第一页将被加载+ 5秒(time.sleep)。第三页是相似的 - 它将在第二页加载时加载+ 5秒。
我认为当haProxy将流量从一个请求重定向到Flask的一个实例并将第二个请求重定向到第二个实例时,这是无效的 - 这个请求应该彼此分开..我应该在5秒内得到每个请求的响应。不是5,10,15,20 ..
有人可以帮我吗?
祝你好运, 太
答案 0 :(得分:2)
如果您通过浏览器进行测试,大多数浏览器会限制同一服务器的并行连接数。
可在此问题中找到更多详细信息:Max parallel http connections in a browser?