여러 감독자 프로세스 실행 간 지연

여러 감독자 프로세스 실행 간 지연

여러 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

Supervisctl을 사용하여 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초마다 하나의 rq-worker 프로세스를 시작한다는 의미입니다.

귀하의 경우 다음이 작동합니다.

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

첫 번째 프로세스도 20초 후에 시작됩니다.

관련 정보