Verzögerung zwischen der Ausführung mehrerer Supervisor-Prozesse

Verzögerung zwischen der Ausführung mehrerer Supervisor-Prozesse

Ich habe mehrere PHP-Worker und muss zwischen deren Start eine Verzögerung einstellen. Wie gehe ich damit um?

1. Prozess starten / 20 Sek. warten / 2. Prozess starten / 20 Sek. warten ... Halten Sie 50 Prozesse gleichzeitig am Leben.

[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

Antwort1

Ich hatte ein ähnliches Problem, bei dem das Starten von 64 Python-RQ-Worker-Prozessen mit Supervisorctl bei jedem Neustart CPU- und RAM-Warnungen auslöste. Ich habe Folgendes getan:

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"

Grundsätzlich schlafe ich vor dem Ausführen des Python-Befehls N Sekunden lang, wobei N die Prozessnummer ist. Das bedeutet im Wesentlichen, dass mein Supervisor jede Sekunde einen RQ-Worker-Prozess startet.

In Ihrem Fall sollte Folgendes funktionieren:

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

Bitte beachten Sie, dass der erste Vorgang auch nach 20 Sekunden startet.

verwandte Informationen