I'm trying to figure out what the ideal set up would for a few servers.

1) Website
1) Mail server
1) Database server
1) file server

In this given scenario, say there is a site that will offer each user 5gb of file storage space along with an e-mail and a dedicated database.

From my somewhat limited understanding of how servers work I concluded that having 1 server per feature would be the best bet so that if one goes off line the other data isn't affected.

What would be a smart and efficient way to handle this?

This is my understanding

1) The website is hosted from 1 main server that will handle user registrations and serve small files. For this I think a simple server set up is more than enough right?

2) For a mail server, to handle the equal amount of registered users., will primarily handle the e-mails and e-mail attachments

3) The database would not be capped in size and only store each clients contacts and profile settings, so every time the user logs in the settings will be pulled from the database. I plan on loading the settings into $_SESSIONs so that the database won't be queried everytime the page reloads etc. But the Contact informations will be queried from the server on every action.

4) the file server will just serve files nothing to cpu or memory intensive

As far as software goes, I was leaning towards CentOs 5.5 and Plesk 10.2 to handle the website server and MySQL 5 for the database servers, maybe Atmail for the mail server. What is recommended on the software side to be loaded on each of those servers?

I have no experience in this field, but i'm gaining some everyday. I need to be intelligently informed so that i atleast know what i'm dealing with in the event that I hire someone to handle the setups for me.

In your experience guys, what would be an ideal set up with both hardware and software configurations?

Also, take in account an example user base of 5,000 clients. So each with 5gb of webspace, email, and own database.

  • I'm sorry, that's several questions that add up to a design problem that can't be simply answered. May 15, 2011 at 6:48
  • 4
    A simple explanation as to why my question was not properly asked, instead of lowering my self esteem there by marking me down would of been appropriate.
    – Eli
    May 15, 2011 at 7:45
  • 1
    Hmm 5000*5GB= 25TB User data. And NO experience, of course. No this needs careful detailed analysis, and/or a 6-figure budget plus support. In other words: This question can not be answered here.
    – Turbo J
    May 15, 2011 at 11:24

1 Answer 1


This is a fairly broad design issue, and is pretty complex. Each of these components involves its own significant design considerations. The level you've presented it is at a pretty abstract level, so the best we can provide are pretty abstract answers.

  • One server per service will provide better service than co-hosting services to some extent.
  • File-servers do indeed tend to be very light on CPU usage (even if the file-server is Windows).
  • 5K users at 5GB average space usage is 25TB, which is a significant amount of storage. Plan for that.
  • At 5K users, multiple servers might be needed for some services, depending on application loading. Plan for that from the start.

As for your follow-on questions about software and OS selection, this is a drill-down that many of us here on ServerFault have had to do in our careers. However, every one of us who has done it knows very well that a correct answer here requires vastly more data than has been provided. Or even is able to be provided in a form like a ServerFault question because it is fundamentally complex, and there are a lot of variables to consider.

To answer those questions, you'll also need to have data or answers on the following issues and topics:

  • A strong feel for user workflow in the entire environment.
  • How well the system behaves under high load.
    • Once load starts saturating parts of your infrastructure, how does it impact the user experience?
    • What kinds of events cause high load?
      • Morning logon?
      • Evening home-from-work logon?
      • Special events driving load?
  • How well the system scales.
    • How easy is it to add servers to parts of the workflow?
      • How easy is it to add web-servers?
      • How easy is it to add database servers?

And a whole bunch of other things. These are the kinds of things that you learn by working closely with the development process and early-adopter tests. It's an iterative process, and not the kind of thing you can just plop a proposal down on a whiteboard and get a well functioning infrastructure out of it.

  • I understand you points, I have designed my server choices based on what I think I will need and want right now with the option to scale them without any problems. The file storage I chose rackspaces dedicated nas option that would be able to scale to 960tb raw space, while the database server I went with a dedicated 32gb ram 400gb SSD server. The web site is on a light 8gb 500gb server, while the mail is going to be a similar server but with added hdd space. These are my choices, as for the other variables are things i will take notice when production takes off.
    – Eli
    May 15, 2011 at 14:04
  • "One server per service will provide better service than co-hosting services to some extent" - multiple servers per service would give better performance and availability - running all services on all servers is usually a much better solution - but this is tricky with databases (without functional partitioning)
    – symcbean
    May 15, 2011 at 14:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .