>Hi,
>I'm running mysql 3.23.42 on a 1.4ghz athlon with 512mb of ram for my
>database server but this machine doesn't seem to be able to handle the load,
>which makes me think i must be doing something wrong. The primary job of
>this database is radius authentication for our 30k or so customers so it is
>imperative that we have a well functioning database, but the cpu load on the
>machine is generally around the 30 mark and it occasionally dies altogehter.
>Could anyone shed any light on what could be causing this problem?
>If it makes any difference,the tables are in innodb format as table based
>locking could spell disaster in a situation such as this.
>Thanks,
>Daniel

Hello Daniel,

That should be more than enough hardware to handle accounting logs. I 
do something like you are doing, and my setup (e4500 4x400mhx, 4gigs 
ram) handles a several million customer userbase with ease. So, you 
are probably right in assuming you have something set up wrong.

There are several places you can really increase performance. I would 
start with your my.cnf settings.
I suspect that since you are using InnoDB that you have at least seen 
the inside of my.cnf. These settings can really help you get more 
performance out of your system. One thing to look at especially is 
the innodb_flush_method  Depending on how important each row of data 
is, is how you should set this. The riskier you get with the data, 
the faster it runs.  After digging around in my own my.cnf settings, 
here is what I have.. this is not really a benchmark by any means, 
just some quick comments I threw into the my.cnf to remember what is 
what.

innodb_flush_method=0_DSYNC  slowest, and most reliable for storing 
data. 44% cpu usage.
innodb_flush_method=littlelesync  a bit faster, might lose data. 30% cpu usage.
innodb_flush_method=nosync       real fast.  15% cpu usage.

I am not expert on innodb, or mysql either. I started playing with 
those values after reading the performance guide on Innodb.com.

The other thing you can get performance out of  is your database 
table itself. With InnoDB you don't want to set its size any larger 
than you need, with a slight margin of safety. The larger you set the 
database size, the longer each insert/select is going to take. Also 
watch your indexes.. each indexed column will take longer to insert 
than a non-indexed column. The price of this is a much faster SELECT 
when you are including that column in a WHERE clause.

On average, our radius servers can authenticate around 400 users a 
second. That is authenticating and recording accounting records. So a 
1.4 that is just recording authentication records should be able to 
push quite a lot more than will be usually required of it for a 
30,000 user base.

-- 
  =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Aaron Williams                [EMAIL PROTECTED]
Black Raven.com              http://www.backraven.com
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to