I updated my server from 2.0.x to 2.1.4 and found out that the rlm_perl config now resides in the /module directory. I noticed that the following directives : max_clones = 10 start_clones = 5 min_spare_clones = 1 max_spare_clones = 5 max_request_per_clone = 100 for perl were not present in the file after the compiling. Are these directives obsolete? Also, in my perl script I make use of the CLONE function that according to the wiki is the ideal place to initialize database handlers. This seemed to work fine for the last 2 years with 1.x and 2.0.x freeradius. Using the parameters above and the CLONE function I could see 10 connections to my mysql server from the moment radiusd was up. When I migrated to 2.1.x the CLONE function seems to be called only after the first radius packet arrives (which is not an issue really). But when I check my connections to the mysql server there seems to be only one...! Was the behavior of rlm_perl altered in any way? I want to have multiple instances of rlm_perl so that I can connect to different databases simultaneously and spread the load. -- ------------------------------------------- Apostolos Pantsiopoulos Kinetix Tele.com R & D email: regs@kinetix.gr -------------------------------------------
Apostolos Pantsiopoulos wrote:
I noticed that the following directives : ... for perl were not present in the file after the compiling.
Are these directives obsolete?
Yes. The server already has a thread management system. Adding another one for Perl is unnecessary.
Also, in my perl script I make use of the CLONE function that according to the wiki is the ideal place to initialize database handlers. This seemed to work fine for the last 2 years with 1.x and 2.0.x freeradius. Using the parameters above and the CLONE function I could see 10 connections to my mysql server from the moment radiusd was up.
Yes.
Was the behavior of rlm_perl altered in any way? I want to have multiple instances of rlm_perl so that I can connect to different databases simultaneously and spread the load.
The perl module no longer manages its own thread pool. This simplifies the code, and lowers overall memory use. You should be able to open multiple DB sockets in one perl interpreter, and use them. Or, the module could be updated to have one perl interpreter per child thread. Alan DeKok.
Alan DeKok wrote:
Apostolos Pantsiopoulos wrote:
I noticed that the following directives : ... for perl were not present in the file after the compiling.
Are these directives obsolete?
Yes. The server already has a thread management system. Adding another one for Perl is unnecessary.
Also, in my perl script I make use of the CLONE function that according to the wiki is the ideal place to initialize database handlers. This seemed to work fine for the last 2 years with 1.x and 2.0.x freeradius. Using the parameters above and the CLONE function I could see 10 connections to my mysql server from the moment radiusd was up.
Yes.
Was the behavior of rlm_perl altered in any way? I want to have multiple instances of rlm_perl so that I can connect to different databases simultaneously and spread the load.
The perl module no longer manages its own thread pool. This simplifies the code, and lowers overall memory use.
You should be able to open multiple DB sockets in one perl interpreter, and use them.
Does this mean that in the new behavior I have one perl instance (thread) shared by all the radius threads? And if so, are all the radius requests being processed sequentially by it? Doesn't this degrade the performance? Or, the module could be updated to have one
perl interpreter per child thread.
This requires that I alter the rlm_perl module code, right?
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
-- ------------------------------------------- Apostolos Pantsiopoulos Kinetix Tele.com R & D email: regs@kinetix.gr -------------------------------------------
Alan DeKok wrote:
Apostolos Pantsiopoulos wrote:
I noticed that the following directives : ... for perl were not present in the file after the compiling.
Are these directives obsolete?
Yes. The server already has a thread management system. Adding another one for Perl is unnecessary.
Also, in my perl script I make use of the CLONE function that according to the wiki is the ideal place to initialize database handlers. This seemed to work fine for the last 2 years with 1.x and 2.0.x freeradius. Using the parameters above and the CLONE function I could see 10 connections to my mysql server from the moment radiusd was up.
Yes.
Was the behavior of rlm_perl altered in any way? I want to have multiple instances of rlm_perl so that I can connect to different databases simultaneously and spread the load.
The perl module no longer manages its own thread pool. This simplifies the code, and lowers overall memory use.
You should be able to open multiple DB sockets in one perl interpreter, and use them.
Does this mean that in the new behavior I have one perl instance (thread) shared by all the radius threads? And if so, are all the radius requests being processed sequentially by it? Doesn't this degrade the performance? Or, the module could be updated to have one
perl interpreter per child thread.
This requires that I alter the rlm_perl module code, right?
Alan DeKok. - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html
-- ------------------------------------------- Apostolos Pantsiopoulos Kinetix Tele.com R & D email: regs@kinetix.gr -------------------------------------------
Apostolos Pantsiopoulos wrote:
Does this mean that in the new behavior I have one perl instance (thread) shared by all the radius threads? And if so, are all the radius requests being processed sequentially by it? Doesn't this degrade the performance?
Possibly, yes.
Or, the module could be updated to have one
perl interpreter per child thread.
This requires that I alter the rlm_perl module code, right?
Yes. Alan DeKok.
participants (2)
-
Alan DeKok -
Apostolos Pantsiopoulos