Ich mache ein Online-Browser-Spiel mit Websockets und einem Node-Server und wenn ich etwa 20-30 Spieler habe, ist die CPU in der Regel etwa 2% und RAM bei 10-15%. Ich benutze nur ein billiges Digital Ocean Tröpfchen, um es zu hosten.Der Knotenserver stößt nach dem Zufallsprinzip zu 100% und stürzt dann ab. Wie zu diagnostizieren?
Allerdings scheint alle 20-30 Minuten die Server-CPU-Auslastung für 10 Sekunden auf 100% zu steigen und schließlich abzustürzen. Bis zu diesem Zeitpunkt schwankt die CPU normalerweise um 2% und das Spiel läuft sehr flüssig.
Ich kann nicht für das Leben von mir sagen, was dies auslöst, da es keine Fehler in den Protokollen gibt und nichts im Spiel, das ich sehen kann, verursacht es. Scheint einfach ein zufälliges Ereignis zu sein, das den Server zum Absturz bringt.
Es gibt auch einige kleinere Spikes, die den Server nicht zum Absturz bringen, sich aber bald selbst auflösen. Hier ist ein Bild:
Ich glaube nicht, daß ich die Blockierung der Ereignisschleife überall und ich habe keine Ausführungspfade, die lange Lauf zu sein scheinen. Die Pakete zu und von dem Server sind normalerweise zwei pro Sekunde pro Benutzer, so dass nicht viel Bandbreite verwendet wird. Und der Server ist meistens nur ein Relay mit wenig Verarbeitung von Paketen außer der Validierung, so dass ich nicht sicher bin, welcher Codepfad so intensiv sein könnte.
Was kann ich tun, um dies zu profilieren und herauszufinden, wo ich anfangen soll zu untersuchen, was diese Stacheln verursacht? Ich würde mir gerne vorstellen, dass es einen Codepfad gibt, den ich vergessen habe, der unter Last erstaunlich langsam ist, oder vielleicht fehlt mir eine Knotenflagge, die es auflösen würde, aber ich weiß es nicht.
haben Sie diese http://techblog.netflix.com/2014/11/nodejs-in-flames.html überprüft? oder diese http://stackoverflow.com/questions/13375735/node-js-cpu-100/13376256#13376256? Können Sie bestätigen, dass die Last vom Node-Prozess über Top oder ähnliches stammt? –
@ mh-cbon: top bestätigt, es war alles von der Knoten-App –
Haben Sie in Betracht gezogen, einen Blick auf newrelic zu werfen? Kann auch helfen. –