多个 Supervisor 进程执行之间的延迟

多个 Supervisor 进程执行之间的延迟

我有多个 PHP 工作器,我需要设置每个工作器的启动延迟。如何处理?

启动 1 个进程/等待 20 秒/启动第 2 个进程/等待 20 秒... 保持 50 个进程同时活跃。

[program:get_comments]
directory=/var/www/
command=/usr/bin/php post_request.php
user=root
autostart=true
autorestart=true
process_name=%(program_name)s_%(process_num)02d
numprocs=50
stdout_logfile=/var/www/worker.log
stderr_logfile=/var/www/worker.error

答案1

我遇到了类似的问题,使用supervisorctl启动64个python rq-worker进程时,每次重启都会引发CPU和RAM警报。我做了以下事情:

command=/bin/bash -c "sleep %(process_num)02d && virtualenv/bin/python3 manage.py rqworker --name %(program_name)s_my-rq-worker_%(process_num)02d default low"

基本上,在运行 python 命令之前,我会休眠 N 秒,其中 N 是进程号,这基本上意味着我的主管每秒都会启动一个 rq-worker 进程。

对于您来说,以下操作应该有效:

command=/bin/bash -c "sleep $((%(process_num)01d + 20)) && /usr/bin/php post_request.php" 

请注意,第一个过程也将在 20 秒后启动。

相关内容