Xentral 22.1 verfügt über eine Warteschlangenkomponente zur Normalisierung der Arbeitslast. Die Aufträge in der Warteschlange werden von einem lang laufenden Arbeitsprozess ausgeführt.
Befehl, um den Worker manuell zu starten:
php /xentral_root_dir/artisan queue:work
Befehl zum manuellen Stoppen des Workers:
php /xentral_root_dir/artisan queue:restart
Anmerkung
Der Befehl heißt "restart", aber er hält den Prozess nur an.
Für weitere Informationen und Befehlsoptionen besuchen Sie die Laravel-Dokumentation.
Sie sollten ein Prozesskontrollsystem oder einen Prozessmonitor verwenden, um Worker neu zu starten, wenn sie heruntergefahren werden oder abstürzen.
Jedes System, das in der Lage ist, einen Prozess automatisch über einen Konsolenbefehl zu starten, wenn er nicht läuft, ist geeignet.
Unter Linux können Sie mit systemd
einen Dienst als Prozesskontrollsystem definieren und ausführen.
-
Definieren Sie den Dienst
-
Erstellen Sie eine Datei wie
/etc/systemd/system/queue_worker@.service
(das@
ist wichtig) -
Geben Sie die Konfiguration in diese Datei ein
Beispiel:
[Unit] Description=Runs and keeps alive the artisan queue:work process [Service] Restart=always RestartSec=1 StartLimitIntervalSec=0 WorkingDirectory=/var/www/xentral/ User=<worker_user> ExecStart=php /var/www/xentral/artisan queue:work --max-time=3600 [Install] WantedBy=default.target
-
-
Ersetzen Sie
/var/www/xentral
durch das Stammverzeichnis Ihrer xentral-Installation.-
Laden Sie den Daemon neu
systemctl daemon-reload
-
Starten Sie den ersten Worker
systemctl start queue_worker@1 # enable service on every boot systemctl enable queue_worker@1
-
Sie können weitere Worker starten, indem Sie den Befehl mit nachfolgenden Nummern wiederholen
systemctl start queue_worker@2 systemctl enable queue_worker@2 systemctl start queue_worker@3 systemctl enable queue_worker@3 . . .
-
Sie können Supervisor als Prozesssteuerungssystem verwenden, um den Warteschlangenprozess zu konfigurieren.
Weitere Informationen zur Verwendung von Supervisor finden Sie in der Supervisor-Dokumentation.
Konfigurationsbeispiel:
[program:queue-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/xentral/artisan queue:work --max-time=3600 autostart=true autorestart=true stopasgroup=true killasgroup=true numprocs=2 redirect_stderr=true stdout_logfile=/var/www/xentral/storage/logs/queue-worker.log stopwaitsecs=3600
Weitere Informationen zur Konfiguration finden Sie in der Laravel-Dokumentation.
Bei der Verwendung eines Prozesskontrollsystems ist es wichtig , den Worker-Prozess regelmäßig anzuhalten und neu zu starten. Eine Möglichkeit, dies zu erreichen, ist die Verwendung der folgenden Optionen für den Befehl artisan queue:work
:
-
--max-jobs=1000
- Der Worker stoppt nach der Verarbeitung einer bestimmten Anzahl von Aufträgen. Weitere Informationen -
--max-time=3600
- Der Worker stoppt nach einer bestimmten Zeit (Sekunden). Weitere Informationen
Eine Kombination aus beiden Optionen ist möglich.
Tipp
Ändern Sie diese Werte nach Ihren eigenen Erfahrungen. Wenn z. B. ein Worker häufig seine Speichergrenze überschreitet, sollten Sie erwägen, die Worker häufiger neu zu starten.
Sie können mehrere Worker-Prozesse gleichzeitig laufen lassen. Die Anzahl der Worker wird von verschiedenen Prozesskontrollsystemen unterschiedlich gesteuert. Für Systemd müssen Sie mehrere Dienste starten, Supervisor verwendet die Eigenschaft numprocs
.
Berücksichtigen Sie bei der Entscheidung, wie viele Worker laufen sollen, Folgendes.
-
Wie viele unbearbeitete Aufträge gibt es?
Die Aufträge in der Warteschlange werden in der Tabelle
queue_jobs
gespeichert. Wenn die Zahl der Aufträge zu groß wird, können Sie weitere Arbeiter hinzufügen. -
Leistung
Mehr Worker, die Aufträge bearbeiten, führen zu einer höheren CPU- und RAM-Auslastung und können die Antwortzeit der Anwendung beeinträchtigen.