Hello Alan
Again, that's likely a problem with the DB.
Don't tune FreeRADIUS. Tune the DB. It's the source of the problems.
Most of possisble config params of the DB is already tuned. Innodb_flush_method, innodb_flush_log_at_trx_commit, innodb_io_capacity, binary logging is disabled...
Why are there 1M rows in the InnoDB table? If they're historical, move them to a separate table. Have one "live" session table, and another"historical" table for closed sessions. Fix your schema so that it has the correct indices.
We have ~1M of records in radacct table and all of them are on-line sessions. That's the problem. I am cleaning closed sessions every 20s, which removes ~2k records to the "historical" table. Maybe some partitioning or data split could help here.
No amount of poking FreeRADIUS will make the database run faster. Any changes to FreeRADIUS just work around the issue. They don't fix the issue.
I guess I am touching the limits of the DB here. Regards Ales