rlm_perl module crash on high load, need to restart service

Alan DeKok aland at deployingradius.com
Sun Jun 4 21:32:13 UTC 2023


On Jun 4, 2023, at 1:33 PM, Imdad Hasan <imdadalikadiwala0 at gmail.com> wrote:
> 
> I am using the rlm_perl module with an async TCP server. in this rlm_perl
> module is the TCP socket client and swoole is Async TCP socket server.
> 
> When i am testing high load, at that time it's showing an error duplicate
> packet conflict module queue and crashes the server, even after stopping
> the load the freerdius is not working, i need to restart the freeradius
> server and it's working fine.

 The server shouldn't crash of course. But which version are you running?  We've put fixes in so that this shouldn't happen. 

  The underlying problem though is that the back-end isn't responding to rlm_perl, and the Perl module is blocking the server. At which point none of the worker threads are making progress. And then the input queue fills up. 

  The only thing that the server can do here is to start dropping new packets.

  I suspect the crash is due to an old issue with requests being cancelled while they're being used in a module. That's a separate issue from "queue full". But the "queue full" error also means that the modules are blocked, and some requests will be cancelled. 

  The solution here is to fix your Perl script and back-end so that they don't block the server. If the back-end doesn't reply in a short period of time, the requests should be abandoned. 

  We're fixing this in v4 with better async support. But no amount of code changes to FreeRADIUS will allow it to make progress when the back-end is slow. 

  Alan DeKok. 


More information about the Freeradius-Users mailing list