2012-06-04 11 views
35

Ich habe eine Node.js App, die einige Daten aus Mysql in Redis lädt, wenn die App startet. Es hat gut funktioniert, bis wir die Daten in Mysql geändert haben.was kann dazu führen, dass node.js gedruckt und beendet wird?

Jetzt ist es nur mit einer Meldung "Killed" beenden.

Ich versuche, das Problem zu lokalisieren, aber es ist schwierig, mit dem Knoten-Inspektor zu debuggen, da das Problem nicht auftritt, wenn in --debug ausgeführt wird.

Ich glaube nicht, dass mein Problem in den Daten selbst liegt, weil es auf meinem lokalen Rechner funktioniert, aber nicht auf meiner Produktionsbox funktioniert.

Meine Frage ist, was die "Killed" Nachricht verursacht, ist es Node.js oder ist es im Mysql-Treiber oder anderswo?

Antwort

2

Nicht sicher, ob Redis ist, was die Nachricht Killed verursacht, aber das war die Ursache meines Problems.

Ich habe zu viele Daten zu Multi gesendet, weil ich ursprünglich dachte, das war der Weg, Pipelining zu verwenden (was automatisch ist).

+0

Haben Sie eine Lösung gefunden? –

44

Überprüfen Sie Ihre Systemprotokolle auf Nachrichten über Knoten, die getötet werden. Ihre Knotenanwendung verwendet möglicherweise übermäßigen Speicher und wird von Out-Of-Memory killer getötet.

+0

Danke für Ihren Vorschlag. – Tim

+3

In meinem Fall sehe ich tatsächlich in/var/log/syslog: '4. September 16.21.32 hosting kernel: Nicht genügend Speicher: Kill-Prozess 29620 (nodejs) 107 oder Opfer Kind" Sep 4 16:21 : 32 hosting kernel: Killed Prozess 29620 (nodejs) Gesamt-vm: 1054732kB, Anon-rss: 136168kB, Datei-rss: 0kB'. Danke für den Tipp! – weekens

+2

Wenn Sie sich auf einem Red Hat-System befinden, befindet sich dieses Protokoll unter '/ var/log/messages'. Nicht genügend Speicher scheint das Problem für mich zu sein. –

Verwandte Themen