Estimating the number of agents a Puppetserver supports

Puppet has a mathematics equation for estimating how many nodes a Puppetserver can support. This equation is an estimate and should not replace actual benchmarks, as things such as catalog compile size often shift over time.

The estimation of Puppetservers is represented as j = ns/mr. In this equation, we see the following values:

  • j: JRuby instances per master
  • m: Number of compile masters (Puppetservers)
  • n: Number of nodes served by the master
  • s: Catalog compile size in seconds
  • r: Run interval in seconds

Using this equation, let's post a simple metric to work with: how many nodes can a single Puppetserver with one JRuby instance serve, with an average catalog compile time of 10 seconds and a default run interval of 30 minutes? Our equation looks like this: 1 = n10 / 1*1800. We can simplify this to 1 = n10 / 1800. We can multiple both sides of our equation to get 1800 = n10. Simplifying by dividing both sides by 10 gives us n = 180.

A single master, with one JRuby instance, with a run interval of 30 minutes and catalog compile time of 10 seconds can serve 180 agents. If we want to serve more agents, we have the following options:

  • Increase the number of JRuby instances per master
  • Increase the number of compile masters
  • Decrease run interval
  • Decrease catalog compilation times with more efficient code

Just increasing this tiny server to a server with 8 CPUs, and setting the jruby_max_active_instances setting to 8 would allow us to serve 1,440 agents on this server. Adding two more compile masters with the same number of CPUs would get us to 4,320 agents to serve. We can continually add more Puppetservers to this until we have the ability to serve all the nodes in our infrastructure.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.138.117.75