Dynamic number of supervisord controlled processes
I am using supervisord's [program:x] to keep my background queue runners up and running. The amount of numprocs is set to a static number, but now I am looking for a solution to dynamically adjust the process count depending on the workload of the queues.
Is it possible to (programmatically) change the amount of supervisord's numprocs setting without affecting already running workers?
Solution 1:
At this time, I think the answer is no. Best to ask this on the supervisor users list to be sure.
You can change the number of workers running by editing the config, then running "supervisorctl update" or the equivalent XMLRPC commands. The problem is that the existing processes for the program will be restarted. The current implementation only checks if the config for a program has changed or not. It does not handle the special case where only numprocs has changed.
Solution 2:
It is now possible to control the number of processes running through XML-RPC API
Few clients are available, depending on language, some are referenced on this section of the docs and here:
- PHP