dynamic number of SQL sockets?

Stefan Winter stefan.winter at restena.lu
Fri Apr 24 11:00:57 CEST 2009


we've been having fun with the SQL backend connection from our FR 2.1.4
yesterday night, when auth load suddenly increased tenfold.

The issue at hand was that we execute a query in post-auth that takes ~
300 milliseconds. We have configured the rlm_sql_mysql instance for 5
sockets to the MySQL backend, which means an approximate 15 logins per
second sustainable (which is way more than enough for us during normal

As the auth load increased, so did the number of queries, and it went
beyond 15. Auths would have failed (but luckily the query was in a
redundant { ... ok  } block, and so nothing serious happened).

It's important to note that the actual *load* on the MySQL backend was
negligible all the time, so this is not the usually-reported "database
too slow" problem. These queries simply are quite sophisticated, and
they take some time to execute.

In short: more sockets would have solved the problem. But you wouldn't
want so many sockets day-to-day. Something dynamic would be a really
nice feature. In a way just like the thread pool of FreeRADIUS itself is
managed: define a minimum number of SQL sockets, and a min-spare,
max-spare, max-total pair so that the number of connections grows and
shrinks as required.

Does that feature make sense?


Stefan Winter

Ingenieur de Recherche
Fondation RESTENA - Réseau Téléinformatique de l'Education Nationale et de la Recherche
6, rue Richard Coudenhove-Kalergi
L-1359 Luxembourg

Tel: +352 424409 1
Fax: +352 422473

More information about the Freeradius-Devel mailing list