freeradius3: multiple rlm_perl and thread pool
Hi! Is it supported for freeradius3 to use two distinct rlm_perl modules inside single radiusd process but for different virtual servers? My perl installation is built with both of useithreads=define, usemultiplicity=define. In fact, I already run freeradius3/dhcp module with single server and rlm_perl and it works just fine: thread pool { start_servers = 1000 max_servers = 1000 min_spare_servers = 1000 max_spare_servers = 1000 } Each thread keeps its own persistent connection to powerful external MS SQL server and this 64bit FreeRADIUS has enough memory to run memory-hog embedded threaded Perl to be able to process hundreds of parallel DHCP requests without queueing delay. I need to add new virtual server to process plain RADIUS accounting requests (not DHCP requests) using another perl script and another rlm_perl instance. The question is: is it possible to define another thread pool for new virtual server with distinct *_servers parameters? If no, will new virtual server get a copy of its own thread pool with same parameters or FreeRADIUS uses same pool for all its virtual servers? Eugene Grosbein
If you define a new perl instance then that has its own characteristics. If you just define a new virtual server then that inherits. If you want, just run another radiusd process with its own config , so long as it's listening on different ports and sockets You really don't need 1000 threads alan On 3 May 2017 7:58 am, "Eugene Grosbein" <fr@grosbein.net> wrote:
Hi!
Is it supported for freeradius3 to use two distinct rlm_perl modules inside single radiusd process but for different virtual servers?
My perl installation is built with both of useithreads=define, usemultiplicity=define. In fact, I already run freeradius3/dhcp module with single server and rlm_perl and it works just fine:
thread pool { start_servers = 1000 max_servers = 1000 min_spare_servers = 1000 max_spare_servers = 1000 }
Each thread keeps its own persistent connection to powerful external MS SQL server and this 64bit FreeRADIUS has enough memory to run memory-hog embedded threaded Perl to be able to process hundreds of parallel DHCP requests without queueing delay.
I need to add new virtual server to process plain RADIUS accounting requests (not DHCP requests) using another perl script and another rlm_perl instance.
The question is: is it possible to define another thread pool for new virtual server with distinct *_servers parameters? If no, will new virtual server get a copy of its own thread pool with same parameters or FreeRADIUS uses same pool for all its virtual servers?
Eugene Grosbein
- List info/subscribe/unsubscribe? See http://www.freeradius.org/ list/users.html
On 03.05.2017 14:30, Alan Buxey wrote:
If you define a new perl instance then that has its own characteristics. If you just define a new virtual server then that inherits.
If you want, just run another radiusd process with its own config , so long as it's listening on different ports and sockets
I'd like to avoid running another process. In mods-enabled I can create new module/perl instance: perl MODULENAME { filename = ${confdir}/newscript.pl } In sites-enabled I can create new virtual server: server SERVERNAME { listen { type = acct ipaddr = * port = 1646 } accounting { MODULENAME } } How do I specify thread pool characteristics for new perl instance?
On May 3, 2017, at 4:23 AM, Eugene Grosbein <fr@grosbein.net> wrote:
How do I specify thread pool characteristics for new perl instance?
You don't. The thread pool is global. The fact that it's in radiusd.conf, and not in a module configuration file should be a strong hint that it's global. Alan DeKok.
participants (3)
-
Alan Buxey -
Alan DeKok -
Eugene Grosbein