SQLIPPool performance issue

Peter Nixon listuser at peternixon.net
Thu Jul 26 01:30:54 CEST 2007


Hi Roy

The default indexes are:

CREATE INDEX radippool_poolname_ipaadr ON radippool USING btree (pool_name, 
framedipaddress);
CREATE INDEX radippool_poolname_expire ON radippool USING btree (pool_name, 
expiry_time);
CREATE INDEX radippool_nasipaddr_poolkey ON radippool USING btree 
(nasipaddress, pool_key);
CREATE INDEX radippool_nasipaddr_calling ON radippool USING btree 
(nasipaddress, callingstationid);

After reading though them, I think they need some work... (My production 
queries are a little different and so are my indexes)

I think a better index set would be:

CREATE INDEX radippool_poolname_expire ON radippool USING btree (pool_name, 
expiry_time);
CREATE INDEX radippool_framedipaddress ON radippool USING btree 
(framedipaddress);
CREATE INDEX radippool_nasip_poolkey_ipaddress ON radippool USING btree 
(nasipaddress, pool_key, framedipaddress);

Therefore, please run to fullowing on your postgresql database, and report 
back to me what difference it makes:

DROP INDEX radippool_poolname_ipaadr;
DROP INDEX radippool_nasipaddr_poolkey;
DROP INDEX radippool_nasipaddr_calling;
CREATE INDEX radippool_nasip_poolkey_ipaddress ON radippool USING btree 
(nasipaddress, pool_key, framedipaddress);
CREATE INDEX radippool_framedipaddress ON radippool USING btree 
(framedipaddress);

Cheers

Peter

On Thu 26 Jul 2007, Roy Walker wrote:
> Using freeradius-server-snapshot-20070705.
>
> I have setup a test scenario where radclient is sending 500 simultaneous
> requests to the radius server.  This drives the load on the radius and
> postgres database to pretty much max.  The Postgres database is an 8
> Core (4 dual cpu) Sun Opteron with 8g of ram and 3 x 15k SAS drives on
> an LSI Megaraid controller.  So the database box is a decent machine.
>
> Here is the indexes on the postgres database:
> radius=# \di
>                            List of relations
>  Schema |            Name             | Type  | Owner  |     Table
> --------+-----------------------------+-------+--------+---------------
>  public | badusers_incidentdate_idx   | index | dialup | badusers
>  public | badusers_pkey               | index | dialup | badusers
>  public | badusers_username_idx       | index | dialup | badusers
>  public | mtotacct_acctdate_idx       | index | dialup | mtotacct
>  public | mtotacct_nasipaddress_idx   | index | dialup | mtotacct
>  public | mtotacct_pkey               | index | dialup | mtotacct
>  public | mtotacct_username_idx       | index | dialup | mtotacct
>  public | mtotacct_userondate_idx     | index | dialup | mtotacct
>  public | nas_nasname                 | index | dialup | nas
>  public | nas_pkey                    | index | dialup | nas
>  public | radacct_active_user_idx     | index | dialup | radacct
>  public | radacct_pkey                | index | dialup | radacct
>  public | radacct_start_user_idx      | index | dialup | radacct
>  public | radcheck_pkey               | index | dialup | radcheck
>  public | radcheck_username           | index | dialup | radcheck
>  public | radgroupcheck_groupname     | index | dialup | radgroupcheck
>  public | radgroupcheck_pkey          | index | dialup | radgroupcheck
>  public | radgroupreply_groupname     | index | dialup | radgroupreply
>  public | radgroupreply_pkey          | index | dialup | radgroupreply
>  public | radippool_nasipaddr_calling | index | dialup | radippool
>  public | radippool_nasipaddr_poolkey | index | dialup | radippool
>  public | radippool_pkey              | index | dialup | radippool
>  public | radippool_poolname_expire   | index | dialup | radippool
>  public | radippool_poolname_ipaadr   | index | dialup | radippool
>  public | radpostauth_pkey            | index | dialup | radpostauth
>  public | radreply_pkey               | index | dialup | radreply
>  public | radreply_username           | index | dialup | radreply
>  public | radusergroup_username       | index | dialup | radusergroup
>  public | totacct_acctdate_idx        | index | dialup | totacct
>  public | totacct_nasipaddress_idx    | index | dialup | totacct
>  public | totacct_nasondate_idx       | index | dialup | totacct
>  public | totacct_pkey                | index | dialup | totacct
>  public | totacct_username_idx        | index | dialup | totacct
>  public | totacct_userondate_idx      | index | dialup | totacct
>  public | userinfo_department_idx     | index | dialup | userinfo
>  public | userinfo_pkey               | index | dialup | userinfo
>  public | userinfo_username_idx       | index | dialup | userinfo
> (37 rows)
>
> This seems to be the recommended indexes from what I have seen.  I used
> the latest schema from CVS.
>
> I have not setup the database to look and see if one query is killing
> the box, but I am going to guess it is just the amount that is doing it.
>
> If anyone has another idea I would LOVE to hear it!
>
> Thanks,
> Roy
>
> -----Original Message-----
> From:
> freeradius-users-bounces+rwalker=sensorlogic.com at lists.freeradius.org
> [mailto:freeradius-users-bounces+rwalker=sensorlogic.com at lists.freeradiu
> s.org] On Behalf Of Peter Nixon
> Sent: Wednesday, July 25, 2007 5:21 PM
> To: FreeRadius users mailing list
> Subject: Re: SQLIPPool performance issue
>
> On Wed 25 Jul 2007, Roy Walker wrote:
> > I am having a problem with the SQLIPPOOL performance.  This is
>
> migration
>
> > of an existing radius server using flat user files (old server is
> > running radius 1.1.0).
>
> Hi Roy
>
> You don't specify which version of FreeRADIUS you are using.. Which is
> it?
>
> What does you your radipool table and indexes look like?
>
> Regards



-- 

Peter Nixon
http://peternixon.net/



More information about the Freeradius-Users mailing list