Sitecore How many CDs do I need

"So, how many content delivery boxes do I need for my Sitecore solution?" I hear this question a lot - and it is not easy to answer as all solution have different needs and traffic patterns. But at a high level, this is what I base my assessment on:

  • Peak traffic volume on busiest day of week, busiest hour
  • Average popular pages load time (server time)

Other things that play into consideration:

  • Bandwidth available vs. number of requests and size of these
  • Content Delivery Network(s) used

Now, to make the calculation, I take the average CPU render time of the most popular pages, let's say 50ms, and roughly figure that that means

50ms per page / 1 second = 20 requests per second throughput possible

If I then know that my traffic pattern is this (grab Google analytics or DMS analytics): 80,000 hits (page views) per day (busiest day per week), with 50% of that in the window of 9:00am-10:00am (busiest time):

50% of 80,000 = 40,000 per hour = 11.1 hits per second needed to serve the site at no wait

So, now you're thinking, great, my one CD can handle all the requests - even at peak time. But consider this: The average render time per request is not the only thing going on on the server, there are other processes that need CPU time:

  • The operating system processes
  • The .Net Garbage collector
  • Sitecore's scheduled tasks and cache clearing/building
  • Other tasks and services

Its hard to say what the impact of these are, as they relate a lot to the actual implementation of the Sitecore site. Some sites have advanced data structures or cache's that require time from the CPU occasionally - other sites have advanced queries that can cause extraordinary CPU usage. Some sites keep a max number of connections to a third party service or database - that will keep other requests waiting if exhausted. So I think it is safe to say that you should double your average load time to get a safe buffer. So the calculation is now:

50ms * 2 = 100ms = 10 requests per second maximum throughput per CD

That is less that the needed 11.1 requests per second needed at peak, so therefore we need another CD, or increase the performance of the current CD. I know these are very rough simulations, and that all systems are different - but as a rule of thumb, and a starting point, this has worked quite well for me over the years. Now remember, some solutions have more load on the SQL server than on the CD - so that is a whole different story. But typically, the performance impact is seen on the CD.