Ich habe eine node.js-App und möchte untergeordnete Prozesse mit dem unten aufgeführten Code erzeugen.
Wenn ich diese App lokal ausführe, löst jeder der "ps" -Befehle das Schließen und Beenden aus. In unserer App cloud gießerei (pivotal.io) wird jedoch die stdout.close ausgelöst, aber die Ereignisse 'close' und 'exit' des Kindes verarbeiten sich nie. Außerdem bleiben die Prozesse als Zombie-Prozesse im Speicher (also nach ca. 500 Requests stirbt der Server bei einem E_SPAWN-Fehler). Es scheint also, dass der Exit-Handler in der Prozesskennung node.js nie ausgelöst wird, was dazu führt, dass der Exit-Code des untergeordneten Prozesses nicht gelesen wird.
Kann das mit dem Containerwart, Cgroups ... zusammenhängen? Hat jemand eine Lösung dafür oder ist zumindest auf dasselbe Problem gestoßen?
Der Testcode:
%Vor% Beispiel ps aux
output:
AKTUALISIEREN
Siehe die Kommentare für eine Problemumgehung: Verwenden Sie einen benutzerdefinierten Startbefehl, der mit 'true;' beginnt, z. cf push myapp -c 'true;node index.js'
Tags und Links node.js child-process cloudfoundry