Ich habe einen Laravel-Warteschlange Job namens "Webhooks" mit Beanstalkd und Supervisord auf meinem Ubuntu-Server. Ich kann sehen, dass der Job ordnungsgemäß mit der Prozess-ID 4403 läuft:Laravel-Warteschlange mit Supervisord zu viele FIFO-Dateien öffnen
webhooks RUNNING pid 4403, uptime 4 days, 19:47:01
Wie Sie sehen können, hat dieser Job seit 4 Tagen ausgeführt. In meinem Fehlerprotokoll, begann ich erscheinen die folgenden Fehler zu bemerken:
error:02001018:system library:fopen:Too many open files
Als ich lief lsof | php
, um zu sehen, welche Dateien geöffnet waren, bemerkte ich eine Tonne von Dateien geöffnet, die Art FIFO
hatten. Hier ist ein Experte aus der Ausgabe:
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php 4403 root 0r FIFO 0,8 0t0 9215811 pipe
php 4403 root 1w FIFO 0,8 0t0 9215812 pipe
php 4403 root 2w FIFO 0,8 0t0 9215812 pipe
php 4403 root 3w FIFO 0,8 0t0 9215812 pipe
php 4403 root 4w FIFO 0,8 0t0 9215812 pipe
php 4403 root 8r FIFO 0,8 0t0 9215811 pipe
php 4403 root 9r FIFO 0,8 0t0 9215811 pipe
php 4403 root 10r FIFO 0,8 0t0 9215811 pipe
php 4403 root 11r FIFO 0,8 0t0 9215811 pipe
php 4403 root 12r FIFO 0,8 0t0 9215811 pipe
php 4403 root 13r FIFO 0,8 0t0 9215811 pipe
php 4403 root 14r FIFO 0,8 0t0 9215811 pipe
php 4403 root 15r FIFO 0,8 0t0 9215811 pipe
php 4403 root 16r FIFO 0,8 0t0 9215811 pipe
php 4403 root 17r FIFO 0,8 0t0 9215811 pipe
php 4403 root 18r FIFO 0,8 0t0 9215811 pipe
php 4403 root 19r FIFO 0,8 0t0 9215811 pipe
php 4403 root 20r FIFO 0,8 0t0 9215811 pipe
php 4403 root 21r FIFO 0,8 0t0 9215811 pipe
php 4403 root 22r FIFO 0,8 0t0 9215811 pipe
php 4403 root 23r FIFO 0,8 0t0 9215811 pipe
php 4403 root 24r FIFO 0,8 0t0 9215811 pipe
php 4403 root 25r FIFO 0,8 0t0 9215811 pipe
php 4403 root 26r FIFO 0,8 0t0 9215811 pipe
php 4403 root 27r FIFO 0,8 0t0 9215811 pipe
php 4403 root 28r FIFO 0,8 0t0 9215811 pipe
php 4403 root 29r FIFO 0,8 0t0 9215811 pipe
php 4403 root 30r FIFO 0,8 0t0 9215811 pipe
php 4403 root 31r FIFO 0,8 0t0 9215811 pipe
php 4403 root 32r FIFO 0,8 0t0 9215811 pipe
php 4403 root 33r FIFO 0,8 0t0 9215811 pipe
php 4403 root 34r FIFO 0,8 0t0 9215811 pipe
php 4403 root 35r FIFO 0,8 0t0 9215811 pipe
php 4403 root 36r FIFO 0,8 0t0 9215811 pipe
Dies ist nur ein Auszug. Es sind tatsächlich rund 1200 dieser FIFO
Dateien geöffnet.
Weiß jemand, was verursacht 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?
Eine schnelle Google lässt Sie wissen, dass FIFO-Dateien Named Pipes sind. Etwas in deinem Skript oder in Supervisord erzeugt diese Pfeifen. Sehen Sie sich im PHP-Handbuch die Named Pipes an und schauen Sie, ob Sie den Code, der die Pipes erzeugt, nicht aufspüren können. – Styphon
Wissen Sie, welche Codearten dazu führen können, dass das System Named Pipes erstellt? Ich weiß, dass das eine breite Frage ist, aber ich bin mir nicht sicher, wo ich anfangen soll. Der laufende Code synchronisiert Objekte zwischen meinem internen System und einem externen System, das die BigCommerce-API mit ihrem [PHP SDK] verwendet (https://github.com/bigcommerce/bigcommerce-api-php). Daher werden ständig Informationen aus BigCommerce gepusht und abgerufen. Zuvor habe ich zu viele Verbindungen geöffnet, was dazu führte, dass zu viele offene Dateifehler auftraten, aber das ist nun behoben und dieses FIFO-Problem hat seinen Platz eingenommen. – flyingL123
Nicht vertraut mit Bohnenstange oder Supervisord, aber ich persönlich würde beginnen durch [Suche in Ihrem Code-Basis] (https://github.com/ggreer/the_silver_searcher) für 'proc_open' oder' mkfifo'. – bishop