Hi, all. I am using runit to supervise a large set of nearly identical
processes. Each process accesses certain IO-bound shared resources
(e.g. NFS mount) at startup. At system initialization, when runsvdir is
launched, it launches all these processes (via runsv) essentially
simultaneously. This causes a big resource contention at initialization
that occasionally causes problems.
What I would like is to somehow stagger the startup of the processes, to
avoid the resource contention. I could do this by putting a random
sleep into the ./run scripts, but this would also cause random startup
delays on subsequent process restarts via "sv restart" or the like
(which we occasionally need to do).
What I would prefer instead is to add random delays to the startup of
the *runsv* processes, since this would only apply at system
initialization. Unfortunately I can't see any way to do that right now
(other than somehow wrapping the runsv binary itself).
Does anyone know any way to accomplish what I'm looking for? I don't
believe runsvdir supports any options that would apply here. Is it
possible to somehow point runsvdir to a alternate runsv executable to
which I could add the random delays?
Any suggestions would be much appreciated. Thanks.
jamie.
Received on Thu Jun 04 2015 - 20:41:12 UTC