0

Generally speaking, when setting up a #1 front-end web server (nginx/phusion for RoR) and a #2 db server (mysql) and #3 caching server (redis/memcached), what type of server do you recommend for each?

I'm interested in the following factors:

  1. RAM
  2. Hard drive
  3. CPU - single/double/quad core

These will be either dedicated servers (bare metal) or maybe cloud (ec2), but I am just looking for general guidelines at this point.

sysadmin1138
  • 133,124
  • 18
  • 176
  • 300
Blankman
  • 2,891
  • 10
  • 39
  • 68
  • I think you need to be more specific. What kind of load do you expect? What is your budget? (are you a start-up on a shoestring or a multi-million dollar company?) – SLY Mar 07 '11 at 17:57

2 Answers2

0

There isn't enough information here to answer your question in a specific way, so I'll give you some generalities that may help:

For database servers you want a big- (and fast-)disked, ram-heavy multi-core/multi-CPU monster -- the assumption being there will be a lot of disk activity, you'll want to be able to suck large portions of your database into RAM for fast queries, and you'll have a lot of parallel queries happening at once.
How you size this out depends on a lot of factors (data set size, number of simultaneous connections, how abusive the queries are going to be). Typical disk configurations include very fast SAS or SATA drives in RAID-1 configurations (possibly multiple spindles to separate out your disk load).
Exception: If your DB will be lightly loaded (now and in the foreseeable future) you can skimp and get a dinky database server. Beware of false economy though: Under-specing your DB server may require an extended outage in the future to migrate to better hardware, so it's almost always better to over-build a bit.

For web servers you want to size them proportionally to workload. Serving a bunch of static pages doesn't take much CPU power or RAM. Doing a lot of fancy Ruby work (data-set manipulation on the web server) could require substantially more resources. Reality is probably somewhere in between.
The only real constant for web servers is you need "enough disk to hold your static content and any temporary/cached content" and with today's huge disks that's usually easy to get.
My web servers use OS-level software RAID on relatively tiny / slow SATA drives, usually with 2-4 Gigs of RAM & a single dual- or quad-core CPU (whatever our vendor has on sale at the moment), but our web application is lightweight and doesn't run the risk of overburdening that kind of configuration.

voretaq7
  • 79,879
  • 17
  • 130
  • 214
0

Web server:

  • Cpu accordingly. Small 6 core or multi socket - dependso n waht you need. Small discs - 2 fast ones or ISCSI luns, 2 partitions: OS, Logs, Email spool ;) No content - my web servers pull content from a central NAS location.

  • Database: Supermicro box. THey have rack cases for up to 72 (!) discs in one little rack server, plus a nice board. Put in a good raid controller (Adaptec). Put in CPU and perpare to put in RAM. At the end, though, IOPS will make or break it. Discs: 4 discs as RAID 10 for OS and TempDB, another 2 mirrored, SSD for the logs (log wriete latency is critical for high write speed). The rest for data as needed. Groups of 8 to 16 discs in RAID 6 or RAID 10 depending on need. With an Adapted 6xxx controller a couple ore SSD as read through cache may come in handy. THis is quite high end, though.

TomTom
  • 51,649
  • 7
  • 54
  • 136