Hello, how many records in radacct table do you manage to keep, guys? I see that radius stops working properly after about 150000 accounting records in Oracle (9.2.0.4) database or ~30000 in PostgreSQL 7.4.6. After that amount accounting records are not written into table and FR (v1.0.1) claims about "no DB handles to use". I see this with Oracle and Postgres. The symptoms are the same on two different Solaris8 machines - Netra1120 with 2x440MHz processors and SunFire V240 with 2x1GHz processors. All recomendations about tuning are met - noatime on partitions with DB, no detail accounting, indexes on the accounting table. I'm fighting with that for a couple of months with no understanding what else could be wrong. Our DBA did some tunings on Oracle table and configuration - with no visible results. PostgreSQL is not tuned - just 'configure,make,make install, initdb, createdb radius,etc'.
I 've got more than 1,000,000 rows in my radacct table (MySQL+InnoDB). The numbers you are reporting are really small, your database should be able to handle them just fine. One guess would be that your Session-Ids are not that random so the corresponding update queries have too many candidate rows (explain select is your friend to find out bottlenecks like that). Try using Acct-Unique-Id if that is the case. Do an Explain select on the queries run by the freeradius server (mainly the accounting_stop query and the simul_count query if you 've enabled it) and you should quickly find the problem.
I need to add a few notes on an alternative high performance accounting structure for freeradius in the tuning guide one of these days...
We got about 10.000.000 rows in 2 month. by this amount of accounting data and with update queries every 20 minutes with 50 NAS'es the mysql innodb table is too slow. so i decide to delete accounting data older than 2 days and push into a myisam table for archiving them. now the radacct table has about 300.000 rows and is fast enough for the amount of data we have. really important is it to have a table with row locking like innodb for the radacct table. locking is our biggest enemy to be fast enough for update/insert queries.
- List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html