|
Posted by Matthew Weier O'Phinney on 08/05/05 05:59
* JM <frawst1@gmail.com>:
> I'm quoting out a system for a Windows/Apache/PHP/MySQL
> database-driven web application I've written. I've never gotten too
> deep into determining what is the actual performance bottleneck in
> this scenario. Is it the disk or the RAM?
>
> I expect about 75-100 users during business hours. 90% will be in the
> LAN and 10% will go over the WAN.
>
> I'm wondering if I can get good performance out of a small system with
> 2GB RAM, 1GBps NIC, and a SATA disk or three spanned.
You don't indicate how many queries are made on a given page, how much
data is handled, etc., Without seeing some code, it's hard to say what
the bottleneck for performance will be.
I've done some fairly critical stuff that, because I took the time to
optimize the database, optimize how much data gets displayed at a given
time (pagination is a *good* thing), streamlined the code to minimize
file and database calls, and setup the box to only run what was
necessary for serving pages, I was able to get away with using a
sub-400Mhz box with 384MB of RAM and a 20GB drive (this was a LAMP
setup). And it performed well, even with decent user load.
Disk calls are always more expensive than RAM calls -- but if you're
hitting a database, you're hitting the disk anyways (unless the queries
are getting cached). Run benchmarks, and try to minimize the number of
file calls and database calls to what is absolutely necessary.
Consider dumping Windows for a Linux flavor, or one of the BSDs. You can
tune these better to only run the services needed for the web stack
(Apache, MySQL, cron, firewall, formail/msmtp/sendmail).
Because of the shared-nothing architecture of PHP, you really don't need
heavy hitting boxes in order to get good performance. They don't hurt,
but they're not necessary.
--
Matthew Weier O'Phinney
Zend Certified Engineer
http://weierophinney.net/matthew/
[Back to original message]
|