Arran Cudbard-Bell wrote:
Wow this is such a neat way of doing it. Don't reload the entire client table every time there's an update, just provide provision for bringing new clients into the list dynamically
Yup.
until we get a chance to reload the client list properly.
Nope. If they client is loaded dynamically, it's in the list "properly". There is no difference between clients loaded at boot time and clients loaded dynamically, other than a few entries in the "client" data structure.
Hmm... though because we see such large startup times when loading in clients from SQL, it'd be nice to be able to turn that DoS protection off, and just run the whole setup using dynamic clients, I dare say it'd save quite a bit of memory too (currently loading 600+ NAS).
The main problem right now is that the SQL lookups (or whatever) are done in the main server thread. i.e. until the lookups finish, ALL new requests are ignored. This is bad, but not catastrophic if your SQL servers are up. If the SQL servers are down, bad things can happen, like large timeouts, and maybe lost packets. Once I get the dynamic client lookups pushed to a child thread, the main worker thread can go back to processing other packets. I can then relax some of the DoS provisions.
Did you include client assignment to virtual-servers, I don't see an attribute listed in the example...?
Yes. It's in the "update" section that isn't doing SQL lookups. Alan DeKok.