Freeradius 3.0.7 and multiple buffered-sql servers - detail file issues
Rygl Aleš
ales at rygl.net
Fri Apr 17 21:23:06 CEST 2015
Hello Alan,
thanks for your comments. I try to explain it.
On Friday 17 of April 2015 17:41:08 Alan DeKok wrote:
> On Apr 16, 2015, at 2:44 PM, Rygl Aleš <ales at rygl.net> wrote:
> > I am trying to migrate the freeradius 2.2.5 to 3.0.7. The server is doing
just Acounting request processing and is loading requests to MariaDB with
radacct table on InnoDB engine allowing row level locking. There are 128
detail files derived from Calling-Station-Id attribute using mod 128:
> Why?
The goal is to have server which
- responds as fast as possible.
- is resilient to occasional peaks in the accounting traffic with magnitude of
10 or more
- drops packets as little as possible
- utilizes parallel processing on the DB side as much as possible
I was not able to reach this with InnoDB engine with just sigle queue. It was
pretty fast with MEMORY engine but it suffers from locking on table level (and
uses just a single connection to DB). I was affraid that talking to DB
directly (without fallback to a file buffer) would had problems in case of
peaks. So the idea behind is to rather write to a file which IHMO cheaper that
perform a DB transaction where I have to wait for a lock.
While testing the performance of 2.2.5 server with multiple queues I have
found out that 128 queues was giving the best results from the throughput
point of view. The DB could be down for an hour and about 3 GB of data in
file were loaded then to DB within 20 mins.
> There shouldn't be a need to create 128 detail file writers / readers.
> Version 2 was a little slow reading the detail files. Version 3 is much
> faster, and more robust.
I can confirm that it is definitely faster. I have followed Arran's
recomendations and reduced the number of queues to 12 and it looks good. I
will play with this more.
> I'm not sure. The file descriptor should NOT be closed while it's being
> used.
>
> And for v3, you should set "track = yes". It means that server re-starts
> don't cause re-reads of old accounting packets.
I will try again. Actually I have two more virtual servers in the config with
a single queue processing just couple of packets per second and this error was
there too. I will do some debugs here.
> Don't configure 128 queues. There shouldn't be a need to do that.
I will try the direct connection to DB with a fallback to file.
Thanks
Ales
More information about the Freeradius-Users
mailing list