On 07 марта 2014 г., at 13:02, Willy Tarreau <w...@1wt.eu> wrote:

> On Fri, Mar 07, 2014 at 01:01:04PM +0400, Dmitry Sivachenko wrote:
>>>> Now it behaves almost this way but without  "honoring specified weights".
>>> 
>>> We cannot honnor both at the same time. Most products I've tested don't
>>> *even* do the round robin on equal connection counts while we do. I'm just
>>> restating the point I made in another thread on the same subject : leastconn
>>> is about balancing the active number of connections, not the total number of
>>> connections.
>> 
>> 
>> Yes, I understand that.
>> 
>> But in situation when backends are not equal, it would be nice to have an
>> ability to specify "weight" to balance number of *active* connections
>> proportional to backend's weight.
> 
> It's not a problem of option but of algorithm unfortunately.
> 
>> Otherwise I am forced to maintain a pool of backends with equal hardware for
>> leastconn to work, but it is not always simple.
> 
> I really don't understand. I really think you're using leastconn while
> you'd prefer to use roundrobin then.
> 


I will explain: imagine the backend server which mmap()s a lot of data needed 
to process a request.
On startup, data is read from disk into RAM and server responds fast 
(roundrobin works fine).

Now imagine that at some moment part of that mmap()ed memory is being freed for 
other needs.

When next request(s) arrive, server must to read missing pages back from disk.  
It takes time.  Server becomes very slow for some time.
I don't want it to be flooded by requests until it starts to respond fast 
again.  It looks like leastconn would fit this situation.

But 99.9% of time, when all servers respond equally fast, I want to be able to 
balance load between them proportionally to their CPU number (so I need 
weights).


Reply via email to