LVS
lvs-users
Google
 
Web LinuxVirtualServer.org

Re: persistence-check and timeout

To: "LinuxVirtualServer.org users mailing list." <lvs-users@xxxxxxxxxxxxxxxxxxxxxx>
Subject: Re: persistence-check and timeout
From: Roberto Nibali <ratz@xxxxxxxxxxxx>
Date: Wed, 03 Sep 2003 13:28:02 +0200
Hello,

I recently posted my experience with persistence and the strange
behaviour
of lvs to assign new connections to a 'busy' server although there might

have been servers with no connection at all.

You're the one with the servlets, aren't you?

Maybe this is not a bug but rather a timing problem. I noticed an
optimal
sharing of all rservers if all connections came in shortly. Refering to this I have some questions:

If (the only) connection timed out (TCP_WAIT==0), the server is handled
as 'free' and may get the next incoming request, even if there exists an
(active) persistence-template (involving this server)?

Yes, the template is used for lookup in case of persistency and isn't put into account for load. Also it doesn't have active or passive state, it only has an expiration timer.

The point is, if the expired client decides to go on, it will get the
same
rserver as before for persistance reasons. This rserver is overloaded in
proportion to all others, because of the new connection AND the pers.
one.

Kind of the problem between HTTP 1.0 and HTTP 1.1 requests with pipelining and keepalive.

I hope, its clear to see what I mean.

I'm not sure but I think so.

The better (or a safer) method in my case seems to be to not only count connections but also take a look for existing persistance-templates and possibly pick another real-server to avoid the scenery above.

It might help, yes. I'm actually doing some test conducts an persistent based counters to use in conjunction with RS thresholds.

This might not catch every situation (ie all rservers got pers.), I
know. But I think its a better way to guarantee the sole usage of a server (in

case of #conns < #server).

Right.

We are not dealing with thousands of connections, but with a few computationally intensive / expensive ones.

Another possibility might be to use the feedbackd framework to dynamically adjust the RS weights.

Could this be done or do you think its not feasable (maybe to slow...)
or the whole idea is quite out of the question?

I'm not exactly sure if I understood the problem per se as I just read Horms' reply to your inquiry ;). However I should like you to have a look at a semester work proposal I recently did and tell me if this would solve your problem:

http://pubwww.fhzh.ch/~rnibali/FACHSTUDIUM/SA/Semester_Work_LVS.pdf

As for Horm's reply: I hoped to work on the server pool code this weekend but I have to spend a day at a symposium on network, security and QoS coming up on Friday and the weekend is now booked for a annual company gathering somewhere in a hotel of Switzerland where there is probably no Internet.

Best regards,
Roberto Nibali, ratz
--
echo '[q]sa[ln0=aln256%Pln256/snlbx]sb3135071790101768542287578439snlbxq'|dc

<Prev in Thread] Current Thread [Next in Thread>