Wie man NodeJs verwenden Mehr CPU-Kern oder die Multithreading-Statt Single-thread -
Internet sagte, dass
Knoten ist " single-threaded und nicht automatisch nutzen mehr als einen einzigen Kern, der in Ihr potenziell multi-core-Maschine. Dies bedeutet, es sei denn, Sie gestalten es anders, dass Ihre Anwendung nicht den vollen nutzen aus den verfügbaren Kapazitäten der server-hosting zu bieten hat.aus diesem
Klare Frage ? (aktualisiert)
die einfache Frage, kein Vergleich oder scalle trick
- kann NodeJs zu verwenden Multi-CPU-Auslastung
- Was passiert, wenn Knoten die Verwendung von single-threads.?
- Wenn wir Feuer-Knoten mehrere Prozess(knoten1,knoten2,knoten3)Arbeiter gleichen Maschine , so dass alle 4 server core kann die server langsam ?
- Was passiert, wenn Knoten verarbeitet, Sie verwenden Kerne kämpfen für CPU-Ressourcen?
Ich dies Lesen, Dann Inspiriert Sie bitten, Jungs.. 🙂
- Skalierung-a-node-js-Anwendung-zu-10s-of-1000s-of-gleichzeitige-verbindungen : durch Ppetter Corbet
- http://nodejs.org/api/cluster.html
- Nicht unhöflich sein, aber um ehrlich zu sein, es klingt wie Sie nicht verstehen, die Probleme gut genug, um zu Fragen eine vernünftige Frage.
- können Sie mir erklären.. was ist single-thread meinst.?
- Schlag so etwas wie
"single thread" performance
in Ihre Lieblings-Suchmaschine. "Erklären, diese Konzepte für mich" ist eine schreckliche Frage, weil es nicht spezifisch, und es gibt Tonnen von web-Seiten, die Begriffe zu erläutern und Sie können wählen Sie die, die am besten konzentriert sich auf das, was Sie wissen müssen, und Sie finden die meisten verständlich. - Warum brauchen Sie node.js mehr tun? Sind Sie irgendwie zu schlagen, seine performance cap? Wenn nicht, ist dies nicht eine Frage, die Sie stellen sollten.
- danke..david Schartz aber, die Frage nicht zu vergleichen single-und Multi-threaded-Leistung, einfach Frage, wie die Knoten der funktionalen Programmierung verwenden Kind-Verarbeitung.. in nodejs Dokumentation cluster
- mike danke für die Kommentare.. einfach nur neugierig diese docs..
http://nodejs.org/api/cluster.html
, ich denkt, wir vermissen preceptions Jungs..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Frage ist vollkommen gültig.
Einem typischen nodejs web-server nur 1 Kern der CPU zu jedem beliebigen Zeitpunkt.
Werfen Sie einen Blick auf das cluster-Modul
Was Sie brauchen, zu erinnern ist hier, dass multi-threaded-code zu schreiben ist nicht einfach richtig und die Behandlung von Parallelität in einer Anwendung ist etwas, das nur sehr wenige Sprachen gut zu tun. Die NodeJS-team entschieden hat, nicht zu einer threading-Implementierung wahrscheinlich, weil JavaScript selbst ist fehlende Sprachfeatures würde, dass diese einfach und machen NodeJS verwenden Sie einen nicht-standard-JavaScript ist gegen die Absichten von diesem Projekt. Es ist möglich, dass die emerging web-worker-standard löst einige dieser Probleme.
Dass gesagt wird, die von einem Betriebssystem Sicht die Unterscheidung zwischen threads und Prozessen ist ziemlich gering. Jeder Prozess besteht aus einem oder mehreren threads, die jeweils im Wettbewerb mit anderen threads auf das system für die Ressourcen entsprechend Ihrer Priorität.
Wenn Sie eine Anwendung erstellen, die hochgradig multi-threaded, oder Sie bauen eine, die multi-Prozess, Sie haben die gleichen Interessen, wenn es darum geht, Windows flat-out mit jedem Ihrer threads geht auf 100% Auslastung eines CPU-Kerns.
Die Lösung in NodeJS ist, zu brechen, Ihre Aufgabe in eine Reihe von kleineren Aufgaben, die verteilt werden können, unter den Beschäftigten entweder in dem gleichen Prozess, wie Sie vielleicht mit der stream-Schnittstelle, oder zwischen Prozessen mit irgendeiner form von inter-Prozess-Kommunikation.
Wenn Sie sind besorgt über Ihre server überschwemmt wird, und Schleifen zum Stillstand, was Sie tun müssen, ist einige mit irgendeiner Art von rate-limiter, der regelt, wie viel Arbeit getan wird, die von Ihrem Knoten Prozesse. Ein worker-Warteschlange wie RabbitMQ ist ein Weg, dies zu tun.
Alle diese reden von native NodeJS. Wenn Sie bereit sind, mischen Sie einige Module, etwas, das ist ziemlich viel wesentlich mit keine ernsthafte Arbeit, die Sie tun, haben Sie Optionen wie die webworker-threads Paket von NPM, die tun könnten, was Sie brauchen.
Mike Gleason richtig mit seiner Antwort auf die Verwendung der cluster-Modul.
Einen einfacheren Weg zu "verwenden", die zur Nutzung der PM2 app/Modul verwalten Sie Ihre Knoten-Prozesse für die Verwaltung der clustering-für Sie und ermöglicht einen unterbrechungsfreien Neustarts etc.