ich meine CPU Problem dank gelöst Profilierungsloggt sein.
Ich habe versucht, die CPU-Auslastung in mehr Teile meiner Endpunktfunktion zu protokollieren, aber dieser Ansatz war nicht hilfreich. Für alle, die die CPU-Auslastung dieses Skript es ist sehr gut erhalten müssen: zu MySQL-Abfragen verwendet war http://gist.github.com/bag-man/5570809
Um auszuschließen, dass die Frage, die ich eine einfache Anwendung erstellen, die nur Abfragen durchgeführt und ich es mit Apachebench getestet. Dieser Test wurde erfolgreich bestanden.
Danach habe ich die Lösung gefunden.
für Node.js Profil es hier erklärt: https://nodejs.org/en/docs/guides/simple-profiling/
lief ich die App mit der in Profiler gebaut:
NODE_ENV=development node --prof app.js
ich von Apachebench einige Anfragen
ab -k -c 20 -n 250 "http://localhost:8080/"
Ich generierte eine verarbeitete.txt
node --prof-process isolate-0xnnnnnnnnnnnn-v8.log > processed.txt
In der Zusammenfassung bekam ich, dass:
[Summary]:
ticks total nonlib name
4036 22.6% 23.3% JavaScript
13130 73.6% 75.9% C++
1334 7.5% 7.7% GC
527 3.0% Shared libraries
144 0.8% Unaccounted
Die "Bottom up (schwer) Profil" alle zum Modul js uglify bezogene wurde :
/node_modules/with/node_modules/uglify-js/lib/parse.js
So suchen die Abhängigkeiten Ich sah, dass dieses Modul von Jade verwendet wird.
Meine App führte viele Abfragen aus und generierte ein großes Json-Objekt, das an die Jade-Vorlagen-Engine übergeben wurde.
Die Jade verwendete eine Menge CPU, um das übergebene große Objekt zu parsen.
Als erstes habe ich ein Update dieses Moduls von 0.35.0 auf 1.3.1 gemacht (weil Mops noch in Alpha ist).
Jade verwendete viel CPU, um das übergebene große Objekt zu parsen.
Als erstes habe ich ein Update dieses Moduls von 0.35.0 auf 1.3.1 gemacht (weil Mops noch in Alpha ist).
Dank dieses Updates sind die Leistungen gestiegen.
Aber schließlich plane ich die Seite ohne schwere Abfragen zu laden und die benötigten Informationen durch einen REST-Service zu erhalten, ohne Daten zu Jade vorbei
„Haupt-Seite geladen ich einen sehr hohen Einsatz von CPU siehe“ - do Du meinst, dass du immer eine hohe Auslastung siehst, wenn die App ausgeführt wird, du siehst sie nur, wenn die Hauptseite geladen wird, oder du siehst sie nur beim ersten Laden der Hauptseite? –
Diese App hat nur zwei Seiten. Die Startseite ist eine Art Konfigurator, so dass einige Abfragen beim Start und andere Abfragen über AJAX Rest-Dienste durchgeführt werden. Die zweite Seite (die wichtigste) hat viele Abfragen beim Start und in diesem Fall die CPU-Auslastung war es 80/100%. Die App speichert einige Daten in der Sitzung und die anderen auf dieser Seite ausgeführten Vorgänge (über REST-Dienste) haben eine sehr geringe CPU-Auslastung. Also denke ich, dass MySQL-Abfragen das Problem sein könnten, aber ich brauche einen Weg, es zu überprüfen und vielleicht zu lösen. – Zauker