Hi, I have a FreeRADIUS 2.1.9 installation (compiled from source) running on Solaris 10 Sparc and I've run into a memory leak issue when reloading the configuration with a HUP signal. I have a very simple RADIUS setup with just an authorize and a users file. The users file is rather large at 41MB and over 110,000 records, but I've noticed that problem with the default empty users file, too. Starting up FreeRADIUS with -X, waiting until FreeRADIUS says "Ready to process requests." and checking the memory usage, I get this: # ./radiusd -X # ps -opid,vsz,rss,osz,args -p `pgrep radiusd` PID VSZ RSS SZ COMMAND 1379 250704 248448 31338 radiusd -X # pkill -HUP radiusd # ps -opid,vsz,rss,osz,args -p `pgrep radiusd` PID VSZ RSS SZ COMMAND 1379 488272 483376 61034 radiusd -X # pkill -HUP radiusd # ps -opid,vsz,rss,osz,args -p `pgrep radiusd` PID VSZ RSS SZ COMMAND 1379 725840 715856 90730 radiusd -X # pkill -HUP radiusd # ps -opid,vsz,rss,osz,args -p `pgrep radiusd` PID VSZ RSS SZ COMMAND 1379 963408 705800 120426 radiusd -X Eventually the radiusd process takes up all of the memory on the system and the system grinds to a halt. Does anybody have any suggestions on what might be causing this and how to fix it? -- Derek
Derek Chee wrote:
I have a FreeRADIUS 2.1.9 installation (compiled from source) running on Solaris 10 Sparc and I've run into a memory leak issue when reloading the configuration with a HUP signal. I have a very simple RADIUS setup with just an authorize and a users file. The users file is rather large at 41MB and over 110,000 records, but I've noticed that problem with the default empty users file, too.
Starting up FreeRADIUS with -X, waiting until FreeRADIUS says "Ready to process requests." and checking the memory usage, I get this: ... Eventually the radiusd process takes up all of the memory on the system and the system grinds to a halt.
Does anybody have any suggestions on what might be causing this and how to fix it?
It's not a memory leak. The server keeps the old configuration around for a while after a HUP. This is because a request might still be in the middle of being processed, and therefore is using the old configuration. If you wait at least 60 seconds between HUPs, the old "users" file configuration will be freed. There will still, however, be portions of the configuration that *cannot* be free'd without drastic changes to the server core. i.e. The server will user a small amount of additional memory on every HUP. If this is a problem, then patches are welcome. Alan DeKok.
On Aug 25, 2010, at 3:14 AM, Alan DeKok wrote:
Derek Chee wrote:
I have a FreeRADIUS 2.1.9 installation (compiled from source) running on Solaris 10 Sparc and I've run into a memory leak issue when reloading the configuration with a HUP signal. I have a very simple RADIUS setup with just an authorize and a users file. The users file is rather large at 41MB and over 110,000 records, but I've noticed that problem with the default empty users file, too.
Starting up FreeRADIUS with -X, waiting until FreeRADIUS says "Ready to process requests." and checking the memory usage, I get this: ... Eventually the radiusd process takes up all of the memory on the system and the system grinds to a halt.
Does anybody have any suggestions on what might be causing this and how to fix it?
It's not a memory leak. The server keeps the old configuration around for a while after a HUP. This is because a request might still be in the middle of being processed, and therefore is using the old configuration.
If you wait at least 60 seconds between HUPs, the old "users" file configuration will be freed. There will still, however, be portions of the configuration that *cannot* be free'd without drastic changes to the server core.
i.e. The server will user a small amount of additional memory on every HUP.
If this is a problem, then patches are welcome.
Ah, okay, thanks for explaining it. I was HUP'ing the server rather fast, so I wasn't giving it a break. -- Derek
participants (2)
-
Alan DeKok -
Derek Chee