複数のスーパーバイザプロセス実行間の遅延

複数のスーパーバイザプロセス実行間の遅延

複数の 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 はプロセス番号です。これは基本的に、スーパーバイザーが 1 秒ごとに 1 つの rq-worker プロセスを開始することを意味します。

あなたの場合、次の方法が機能するはずです:

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

最初のプロセスも 20 秒後に開始されることに注意してください。

関連情報