Believe it or not, we get this question a lot. Let's first talk about the how a normal web hosting company does it:
- They have a set limit of accounts they put a server, it's usually in the range of 600-1000 accounts per server. They will fill that server up with 1000 new accounts and then move on to the next server, fill that up to 1000 accounts, move on, etc.
Our approach is a little different:
- We do not have a set number of accounts we put on a server, it can range from 300 to 2000 (Yes, 2000. We'll explain...)
When we setup a new server, by default we put all new accounts go on it. We fill it about half way full (around 300-400 accounts). That gives us a lot of breathing room on the server, usually around 75% cpu free (idle). If we don't have another new server to put accounts on, we then go and add accounts to random boxes, based on CPU load. These servers are very big and beefy , however if there's 50 very busy websites, they can make a server of only 300 accounts extremely slow. On the other hand, there could be a server with only websites that get 1-2 hits a day, which we could pack thousands of accounts on and nobody would ever see any slowness.
We will never fill up a server if the server's CPU (idle) percentage is less than 50%. We always want 50% of the CPU idle as a reserve in case there's a burst of traffic (If someone gets DoSed, reddit hugged, slashdotted, etc) or if a big process is running, such as backups. It's a horrible idea to fill up a server all at once as you will not know how busy that server is for months down the road when those websites get popular and by then it will be too late and customers will notice and end up leaving.