Search code examples
puppet

Does Puppet's "splay" setting work when run as a daemon?


I'm trying to spread out my Puppet agents' checkins, to avoid thundering herds and such. The timing settings don't seem to work, though, or at least they don't work as I expect.

In /etc/puppet/puppet.conf, I have (among other lines) these:

[agent]
server = myforemanserver.myorg.org
report = true
runinterval = 25m
splaylimit = 10m
splay = true

The intent of the above lines is to stagger the reports, so that the agent checks in every 25-35 minutes (some random value therein). The splay and splaylimit settings don't seem to be honored, though; the servers on which I've installed this new config are just checking in every 25 minutes exactly. (Since it's checking in every 25 minutes, not 30, I know it's read this new configuration; previously, there was no runinterval, or splay, specified.)

This is Puppet open-source, version 3.8.4, running as a RHEL service.

Are there known issues with the splay settings when running in daemon mode, or is there something I'm overlooking in these settings?


Solution

  • Yes, the splay settings work when running in daemon mode. They are intended for daemon mode. They just don't work as you thought they would.

    Splaying produces a random delay before the first run, thus offsetting the whole schedule of future runs. Each agent will still check in on a fixed schedule.

    This is useful for load averaging in the event that many machines may start at about the same time, such as collocated VMs at the startup of their host, or machines that automatically power on at a scheduled time.