Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

My goal is to figure out if i'm better off with one strong server, or multiple weaker servers with a load balancer. Does the fact of splitting the load between servers have an effect on the total load my website could take?

It's hard to single that out, because there are of course a lot of parameters that affect the results, so some assumptions:

  • Putting failover considerations aside - I know it matters, but for the sake of the question's simplicity, lets assume nothing fails.
  • The servers in the multiple servers option have an accumulated "power" equivalent to the one server option (about the same amount of cores and RAM space).

If that is too theoretical, here is a concrete question that could help:
Suppose I have several instances of exactly the same server - lets call it S.
Suppose that server S can serve a load of up to X calls per time unit.
Will two S servers with a load balancer serve 2X calls per time unit? significantly more? significantly less?

share|improve this question

closed as not constructive by Michael Hampton, HopelessN00b, Chris S Oct 31 '12 at 20:14

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
possible duplicate of Can you help me with my capacity planning? –  Michael Hampton Oct 31 '12 at 16:30

3 Answers 3

It depends if the application has workload that can be run in parallel. If all requests have to be serialized and the serialized workload is the slowest one, you will not gain anything by scaling horizontally (read as "having more servers").

So you have to analyze the workload and the bottlenecks. If the bottlenecks can be parallelized, then it will help to add more servers.

From: http://en.wikipedia.org/wiki/Parallel_computing

"When a task cannot be partitioned because of sequential constraints, the application of more effort has no effect on the schedule. The bearing of a child takes nine months, no matter how many women are assigned."

share|improve this answer
    
+1 for the 'It depends'. It seems that a large part of the question can be answer with 'it depend on XXX and YYY' please add more details on those'. Including this one. @seldary: Example: You web request might scale nicely with more server IO, or it might make no difference at all if you just serve static pages. Not enough info. –  Hennes Oct 31 '12 at 16:33

Ignoring redundancy, it will be better to have the two servers. You'll have an additional bus, an additional CPU cache, additional NICs, etc. While we typically only think in terms of CPU speed and RAM totals, it's important to remember all other hardware components and that you would be gaining an additional set of those as well.

I'm a strong proponent of redundancy, and so even though your question wanted to exclude that from consideration, I would argue to include it in your decision regardless, because you will inevitably need it and you will be glad you have it.

share|improve this answer
    
I do take redundancy into consideration, and I will have more than one server. But, I'm trying to figure out if having more servers will have a higher increase in load that the relative increase in "power". please try to answer the last concrete question... –  seldary Oct 31 '12 at 16:21

Simple maths: if the probability of a server failing is p (say 0.001), then probability of 2 servers failing at the same time is p^2 (0.00001) - i.e. your availabiltiy has gone up by a factor of 1/p (1000 fold).

Whether it reduces the load depends on where the bottlenecks are. Using 2 servers means you've double the bandwidth to L2 cache, double the bandwidth to main memory and double the disk I/O.

There are also issues with scheduling large number processes (pre-fork and threaded) which can introduce additional latency when running on a single non-NUMA machine.

OTOH you're more likely to get a cache miss for an I/O request. Also unless you implement some preferential routing then you've additional overheads migrating sessions across the 2 machines. If you use a load balancer (why?) then you are injecting additional latency and a single point of failure back into the stack.

There is not really such a thing as a server which has the equivalent power of 2 other servers however it's very unusual niche scenarios where big iron has a benefit for webserving.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.