HAProxy – 不均匀的负载分布

我目前正在testinghaproxy来平衡我们的通讯时代。 我们为客户build立个性化的通讯。

要做到这一点,我们使用两个networking服务器(相同的机器),和一个“邮件引擎”。 邮件引擎调用Web服务器,然后返回一个个性化的HTML通讯。

现在的问题是,一个Web服务器的CPU负载约75%,而另一个只能运行15%。 在testing时查看“会话率”,两台服务器的“Session rate – > Cur”全部在3到4之间。

但是当看“会话”时,这里“会话 – > Cur”总共有10个,Web服务器1有一个“Cur”8,另一个Web服务器有0到2个。

为什么会在第一个Web服务器上有8个会话,另一个是0-2?

这是我的configuration:

defaults log global mode http option httplog option dontlognull retries 3 option redispatch maxconn 2000 timeout connect 5000 timeout client 50000 timeout server 50000 listen mailgenerator 10.46.70.75:80 mode http stats enable balance roundrobin option httpclose option forwardfor option httpchk HEAD /robots.txt server mail1 192.168.70.11:80 check weight 100 server mail2 192.168.70.12:80 check weight 100 

如果您使用轮循机制,那么无论负载如何,连接都会平均分配。 所以如果你有一个较慢的服务器或一个缓慢的进程,它可以build立一个队列,而另一个是免费的。

如果使用lessconn平衡,并且设置每个服务器的低maxconn来使连接在haproxy中而不是在每个服务器上排队,那么可以获得更均匀的分配。

对于http来说,当前会话没有多大意义。 Total和LbTot会话更好地代表了服务器如何被平衡。 如果这些数字相当平均,可能是某个服务器上的某个东西导致它更慢地处理它的请求,因此推高了负载。