Difference between revisions of "Hardware Specifications"

From Roaring Penguin
Jump to: navigation, search
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
Here's what our database servers for our Hosted CanIt service look like:
+
===Typical Installation===
 +
The following provide some hardware provisioning guidelines for 25 / 50 / 100k mailbox.
  
===Disk===
+
Our rule of thumb is that 1 mailbox counts for 20-30 messages a day, so you're looking at 750k - 3M messages / day.
We have sixteen 10k RPM SATA drives arranged using Linux Software
 
RAID-10 with the "offset" strategy.  This is described here:
 
http://www.ilsistemista.net/index.php/linux-a-unix/35-linux-software-raid-10-layouts-performance-near-far-and-offset-benchmark-analysis.html
 
  
The sixteen disks are arranged conceptually as eight stripes with each
+
For hardware a rule of thumb is that a single server can handle around
stripe being a RAID-1 pair; this gives us (theoretically) 16x read
+
150k messages a day.  For installations handling around 500k a day or
performance and 8x write performance compared to a single disk; actual
+
less, we can go with simpler math and say that <150k, 1 server,
measurements show that the performance improvement is quite close to
+
150k-300k, 2 servers, 300k-500k, 3 servers.
what the theory says.
 
  
We considered using SSDs for the database server, but I am still not
+
(Where "server" means a modern quad-core processor with 8 GB of RAM and sufficient storage, e.g. 1TB or so. (There is more specific guidance on disk sizing in the Installation Guide, sections 6.2.1 Disk Space for Archiving.)
completely comfortable with their reliability and for us, at least,
+
===Large Installation===
spinning disks still work fineOur hosted service peaks at about
+
However, when you get into larger installations then there are a bunch of optimizations that our development team are aware ofIn these larger cases these details become more significant and it's more important to tune your recommendations to fit the specific needs. (see [[Hardware Specification Hosted]])
7 million messages/day and the database server is nowhere near IO-saturated.
 
  
===RAM===
+
For example, what kind of disks to buy, how to configure them (e.g. RAID10 using software RAID (most h/w RAID controllers are terrible compared to linux software RAID), divvying up certain partitions on certain partitions to maximize disk IO throughput (our hosted systems use 3 pairs of disks, I think, for this reason), whether or not to use PGBouncer which optimizes database connections... and a bunch of other optimizing stuff that our development team gurus are aware of.
Our database servers have 256GB of RAM each. I recommend putting as
 
much RAM as possible into the system; you want all of the small tables
 
such as sender rules, user-lookup settings, etc. to wind up cached in
 
RAM for best performance.
 
  
===CPU===
+
So hopefully the above will provide a good ballpark for understanding the basics and also realizing that for a large installation like it's best to let our development team come up with specifics to meet your needs so you don't over-provision or under-provision or misconfigure.
Our database servers have two physical processors:
 
Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
 
  
Each processor has six cores and each core has hyperthreading, so
 
cat /proc/cpuinfo reports 24 processors.  That seems to be plenty
 
of CPU for our needs.
 
 
The database servers configured as above cost us $10 000 each.  We
 
use SuperMicro hardware; brand-name hardware like HP or Dell will
 
probably be a bit more expensive.
 
 
<div style="float:right; clear:both; margin-right:0.5em">[[Support Wiki | [Home]]]</div>
 
<div style="float:right; clear:both; margin-right:0.5em">[[Support Wiki | [Home]]]</div>
 
[[category:All]][[category:Best Practices]]
 
[[category:All]][[category:Best Practices]]

Latest revision as of 14:02, 3 October 2014

Typical Installation

The following provide some hardware provisioning guidelines for 25 / 50 / 100k mailbox.

Our rule of thumb is that 1 mailbox counts for 20-30 messages a day, so you're looking at 750k - 3M messages / day.

For hardware a rule of thumb is that a single server can handle around 150k messages a day. For installations handling around 500k a day or less, we can go with simpler math and say that <150k, 1 server, 150k-300k, 2 servers, 300k-500k, 3 servers.

(Where "server" means a modern quad-core processor with 8 GB of RAM and sufficient storage, e.g. 1TB or so. (There is more specific guidance on disk sizing in the Installation Guide, sections 6.2.1 Disk Space for Archiving.)

Large Installation

However, when you get into larger installations then there are a bunch of optimizations that our development team are aware of. In these larger cases these details become more significant and it's more important to tune your recommendations to fit the specific needs. (see Hardware Specification Hosted)

For example, what kind of disks to buy, how to configure them (e.g. RAID10 using software RAID (most h/w RAID controllers are terrible compared to linux software RAID), divvying up certain partitions on certain partitions to maximize disk IO throughput (our hosted systems use 3 pairs of disks, I think, for this reason), whether or not to use PGBouncer which optimizes database connections... and a bunch of other optimizing stuff that our development team gurus are aware of.

So hopefully the above will provide a good ballpark for understanding the basics and also realizing that for a large installation like it's best to let our development team come up with specifics to meet your needs so you don't over-provision or under-provision or misconfigure.