rlm_perl does not honor start_servers?

Igor Novgorodov igor at novg.net
Fri Apr 1 15:53:07 CEST 2016


Hello!

I've got latest 3.0.11 FreeRADIUS and Perl authorization module under 
rlm_perl.
The server is relatively highly loaded (around 1000 access-requests per 
sec).

And although i have "start_servers = 256" and "min_spare_servers = 256" 
in the thread pool
configuration, FreeRADIUS does not initialize those threads until the 
requests start to hit the daemon.

After some requests in parallel it spawns all required 256 threads and 
then this number stays constant.

The problem is that the thread creation in rlm_perl seems to be quite 
expensive timewise (or i may be doing something wrong?).
It is clearly seen by testing with radclient - after daemon restart it 
is capable of only 30 req/s.
Then, when all the threads come alive - it goes up to 1k req/s and more.

So unless i warm up the server with a few thousand test queries to 
create all threads - it gets
overwhelmed for several minutes when the real load shows up, which 
causes a lot of warnings
in the logs and massive retransmits from NASes (there are about 900 of 
them with lots of clients each),
which is nasty.

So the question is - this behavior is expected? I can, of course, warm 
up server after each restart but
it seems irrational for me.

Thanks!


More information about the Freeradius-Users mailing list