多個 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 秒後開始。

相關內容