Forum Moderators: open
Do you think should I put them in one machine or two or three?
What we are going to do with this server is Microsoft Windows 2000/2003, PHP, MySQL, iMail.
Any help appreciated.
In a perfect world, you should definitely have each section of your site (web, database, email) on different servers. Email is one area that people tend to underestimate. If you're sending out a lot of batch emails, it can cripple a web server (especially with inefficient code). At the very minimum, you should have at least 2 servers (web & database).
you can pick a dual processor server (centrino)
then go to a dual xeon....and you could increase the number of CPUs.
apart from that you could also spend 2000 dollars a month on a blow-up sun server or itanium with 16 gigabyte ram.
it is easier if you have one powerful server than lots of standard servers.
most hosts also make you pay for internal traffic, e.g. between the database and the webserver.
The only other thing to consider is getting a second server for security issues. Your web server is available to the web, external and visible ip address: hackable target. If an offender had to first get through the web server and then hack through to the rest of the network from there, it slows them down some at the very least.
One major reason for having them on different machines is so you can scale either piece when it becomes a bottleneck. Generally when the DB starts to become a bottleneck, it should be on it's own machine which is specifically built for the task of serving a database. That generally means as many hard drives and CPU's as possible as well as tons of RAM for starters. Additionally, you can tune the database to take full advantage of the servers resources without worry of affecting the web service side of things.
Generally a good web server is mostly about raw CPU performance, with disk speed as a distant second. A moderate amount of ram will usually be fine.
I have built systems where the database server's disks (6 of them) are totally maxed out in terms of IO at any given time, yet most aspects of the web site, including the database performance for most users seems fine. The web server (a different machine) is on a server who's disk is NOT being starved, so it behaves fine. The DB server is mostly servicing user request/queries from cache (RAM), so end user performace still seems to zip along. Since it's a multi-cpu box, the disk io (jornaling processes), the process causing disk io, and user queries don't have to share a cpu, again decreasing negative effects. If both machines were on the same box, the disk IO would affect the web server, maybe severly. On a well tuned db in a two server system like this, most (all?) users don't even know this disk IO is maxed out and backlogged. Things just hum right along.
Don't know if that helps, but it's one example of where two servers are helpful.