Ich führe einen Laravel-Queue-Job mit dem Namen "webhooks" unter Verwendung von beanstalkd und supervisord auf meinem Ubuntu-Server. Ich kann den Job ordnungsgemäß mit der Prozess-ID 4403 laufen sehen:
%Vor%Wie Sie sehen, läuft dieser Job seit vier Tagen. In meinen Fehlerprotokollen bemerkte ich den folgenden Fehler:
%Vor% Als ich lsof | php
ausführte, um zu sehen, welche Dateien geöffnet waren, bemerkte ich eine Menge geöffneter Dateien, die den Typ FIFO
hatten. Hier ist ein Experte aus der Ausgabe:
Dies ist nur ein Auszug. Es sind tatsächlich rund 1200 dieser FIFO
-Dateien geöffnet.
Weiß jemand, warum die Dateien erstellt werden? Welche Arten von Code würden dazu führen, dass das System eine neue FIFO-Datei öffnet? Wofür werden diese Dateien verwendet?
Am Ende habe ich das Datei-Open-Limit auf meinem System erhöht, und das scheint das Problem behoben zu haben. Die Supervisor-Dokumente sagen das:
supervisord verwendet Dateideskriptoren großzügig und gibt einen Fehler ein Modus, wenn man nicht vom Betriebssystem erhalten werden kann
Nachdem ich mein Datei-Öffnungslimit auf 10.000 erhöht habe, habe ich den Fehler nicht mehr gesehen. Ich überprüfe periodisch die Anzahl der geöffneten FIFO-Dateien, und es gibt Zeiten, in denen es sehr hoch ist (zu Tausenden) und zu anderen Zeiten ist es viel niedriger (zu Hunderten). Es sieht also so aus, als ob der Supervisor diese Dateien ständig öffnet und schließt. Ich musste nur sicherstellen, dass das System dem Supervisor genügend Platz für seine Arbeit lässt.
Falls jemand sich fragt, habe ich das Dateilimit erhöht, indem ich die folgenden zwei Zeilen am unteren Ende von /etc/security/limits.conf
hinzugefügt habe.
Ich musste den Supervisor neu starten und mich einige Male einloggen, bevor das neue Limit in Kraft trat, aber letztendlich funktionierte es.
Tags und Links php laravel supervisord beanstalkd