Laravel-Warteschlangen-Worker-Speicherabdruck ist zu groß: /

9

Ich führe einen Warteschlangenarbeiter aus, der sich mit sechs MQs verbindet. Wenn es hochgefahren wird, verbraucht es 25 MB RAM. Das heißt, es gibt null Jobs in der Warteschlange, d. H. Der Arbeiter befindet sich in einem Schlafzustand. Ich benutze Larvel für alle meine Projekte, dieses spezielle Projekt ist rein für den Queue-Worker gebaut (d. H. Einen Microservice ohne Web-Zugang).

Ich möchte den Speicherbedarf reduzieren, aber noch wichtiger möchte ich wissen, wo der Speicher verbraucht wird. Ich benutze PHP 7.1 so jetzt, dass xhprof nicht mehr Profile Speicher muss ich eine Alternative herausfinden.

Ich weiß, dass Lumen weniger Speicher verbrauchen soll, und es scheint zumindest, dass Lumen eine Teilmenge von Laravel ist. Ist es möglich, Teile meiner Laravel App auszuschalten, so dass sie Lumen nachahmt? Ich habe versucht, Zeilen aus dem Array config / app.php $providers auszukommentieren, aber es scheint keinen großen Unterschied im Speicherverbrauch zu geben (~ 1MB nach meinem Maß).

tl; dr; wie man den Laravel-Speicher-Footprint "zwickt"? wie man Laravel in Lumen verwandelt?

Danke

EDIT: Bilder oder es ist nicht passiert. AFAIK die RES-Spalte ist in Kilobyte, also ~ 39MB Speicher.

    
mils 11.10.2017, 23:05
quelle

2 Antworten

1

Könnte dies dazu beitragen, den Speicher, der in Ihrer Warteschlange verwendet wird, zu reduzieren.

url: Laravel-Warteschlangen - Ressourcenüberlegungen

  

Überlegungen zur Ressource

Daemon-Warteschlangen-Worker starten das Framework vor der Verarbeitung jedes Jobs nicht neu. Daher sollten Sie alle schweren Ressourcen freigeben, nachdem jeder Job abgeschlossen ist. Wenn Sie beispielsweise eine Bildbearbeitung mit der GD-Bibliothek durchführen, sollten Sie den Speicher mit imagedestroy freigeben, wenn Sie fertig sind.

    
Dhaval Purohit 10.01.2018 08:35
quelle
1

Haben Sie Ihre php.ini überprüft und alle Erweiterungen deaktiviert, die Sie nicht für Ihren Mitarbeiter benötigen? Rest der Codebasis.

Sie könnten eine benutzerdefinierte php.ini für diesen Worker erstellen und über die Befehlszeilenargumente

bereitstellen
  

php -c warteschlange_php.ini artisan queue: work.

Vergessen Sie nicht, dass der Speicher-Footprint, den Sie dort sehen, für all diese PHP-Ausführung gilt, also den JIT-Compiler und alle Erweiterungen, die geladen werden, und was auch immer sie laden.

    
Martin Barker 16.01.2018 15:53
quelle