Pracuję nad aplikacją ASP.NET w programie Visual Studio 2017 i zauważam proces Node.JS: JavaScript po stronie serwera działający z pamięcią od 1,3 GB do 1,8 GB. Mój proces roboczy usług IIS ma normalny rozmiar, jak w VS 2015.
Moja aplikacja nie zawiera żadnych bibliotek Node.JS. Nie mogę dowiedzieć się, jak wyłączyć ten proces Node.JS: JavaScript po stronie serwera. Zjada zbyt dużo pamięci na coś, do czego nie mam pożytku.
Czy istnieje sposób, aby to zabić, oprócz odinstalowania VS 2017 i powrotu do VS 2015?
Zabicie głównego procesu w Menedżerze zadań nie wpływa na nic w VS, jednak jeśli przejdę do zakładki Szczegóły i zabiję poszczególne uruchomione procesy, zawiesza się Visual Studio. Nagrałem film pokazujący, co się stało po tym, jak zabiłem proces i uruchomiłem lokalną stronę internetową (przepraszam za jakość, tak ograniczony rozmiar obrazu do 2 MB):
źródło
Odpowiedzi:
Narzędzia> Opcje> Edytor tekstu> JavaScript / TypeScript> Usługa językowa ...
Odznacz pole „Włącz nową usługę języka JavaScript”.
Uruchom ponownie program Visual Studio
Wydaje się, że uniemożliwia to uruchomienie procesu NodeJS.
źródło
Zgłosiłem uwagi w tej sprawie:
https://developercommunity.visualstudio.com/content/problem/31406/visual-studio-2017-nodejs-server-process-turn-off.html
Otrzymałem odpowiedź od zespołu MS - skierował mnie do tego postu:
https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629
Proces node.exe ma wiersz poleceń:
Skutecznie powiedziano mi:
W VS 2017 kilka funkcji jest zaimplementowanych w JavaScript. Node.js jest używany przez program Visual Studio do uruchamiania tego kodu JavaScript. Node jest używany między innymi do uruchamiania kodu, który zapewnia usługi formatowania i inteligencji, gdy użytkownik edytuje TypeScript lub JavaScript. To zmiana w stosunku do VS 2015.
Odpowiada na moje pytanie, ale ujawnia inne - dlaczego potrzebujesz 1,4 GB pamięci, aby zapewnić mi inteligencję w plikach JavaScript ... czy jest to jedno z rozwiązań wbudowanych w VS, więc zużywa mniej pamięci, więc nie robi nie osiągnąłeś limitu 2 GB (4 GB) 32-bitowych procesów? Pytania pytania pytania.
źródło
Musisz wyłączyć obsługę języka TypeScript w programie Visual Studio:
Narzędzia> rozszerzenia i aktualizacje> TypeScript dla Microsoft Visual Studio> Wyłącz
Następnie po prostu uruchom ponownie program Visual Studio i gotowe.
źródło
Odpowiedź Ryana Terniera wskazała mi, co moim zdaniem jest właściwym kierunkiem. Po jego linku ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) dotarłem do odpowiedzi Bowdena Kelly'ego tuż pod zaakceptowaną odpowiedzią.
Oto odpowiedź Bowdena Kelly'ego:
{ "compilerOptions": { "allowJs": true, "noEmit": true }, "exclude": [ "wwwroot/lib" //ignore everything in the lib folder (bootstrap, jquery, etc) // add any other folders with library code here ], "typeAcquisition": { "enable": true, "include": [ "bootstrap", "jquery" //list libraries you are using here ] } }
Po dodaniu folderu ze wszystkimi moimi bibliotekami skryptów do pliku tsconfig.json życie znów było dobre.
źródło
Najbrudniejsze obejście w historii: po prostu zmień nazwę na
ServiceHub.Host.Node.x86.exe
inną. Od tamtej pory mi to nie przeszkadza. Kiedy (jeśli) naprawdę tego potrzebujesz, po prostu zmień nazwę z powrotem.Ta sama sztuczka działa w Adobe Photoshop, który również uruchamia Node z jakiegoś powodu, którego jeszcze nie odkryłem w moim zwykłym przepływie pracy.
Okazało się...
Nie możesz po prostu zmienić jego nazwy i oczekiwać, że wszystko będzie dalej działać. Kto wiedział!
Najwyraźniej ta sztuczka ze zmianą nazwy działa tylko wtedy, gdy zawiesisz proces VS i zabijesz Node, a następnie wznowisz VS. Jeśli spróbujesz uruchomić VS ze zmienioną nazwą pliku Node exe, nastąpi awaria podczas otwierania projektu z „nieznanym twardym błędem”. Ponadto, podczas pracy nad już załadowanym projektem, leniwy licznik odwołań powyżej metod i właściwości nie będzie działał, ponieważ najwyraźniej polega to na istnieniu Node.
Więc może być w porządku, aby po prostu zawiesić proces Node i pozwolić systemowi Windows na wymianę pamięci z pamięci RAM na dysk twardy, bez zmiany nazwy exe, abyś mógł ponownie uruchomić VS później bez przechodzenia przez kłopoty ze zmianą nazwy. To znaczy, jeśli chcesz żyć z konsekwencjami.
źródło
Coś, co może pomóc projektom złagodzić wagę nodejs: polega na ponownym przypisaniu wersji węzła używanej w menu Narzędzia> Opcje> Projekty i rozwiązania> Zarządzanie pakietami sieci Web do zainstalowanej wersji 64-bitowej. Studio nadal będzie uruchamiać swój wewnętrzny Node dla instancji tsserver.js, ale każdy maszynopis w projekcie będzie domyślnie używać dostarczonej wersji - i to pomogło mi z pierwszej ręki.
Ponadto, innym razem, gdy zauważyłem, że usługa językowa działa, odkryłem, używając prostego
tsconfig.json
powyżej katalogów używanych jako repozytoria i określającskipLibCheck: true
i dodając node_modules do wykluczenia - ogromnie pomogło w usłudze, a jeden plik obsługuje wszystkie foldery poniżej niezależnie od bezpośrednich odniesień do projektu. PS - jeśli nadal chcesz obsługiwać JavaScript Intellisense, ustaw opcjęallowJs: true
inoEmit: true
.Na koniec sprawdź w Opcjach skryptu w menu Narzędzia> Opcje> Edytor tekstu> Javascript / Typescript> Projekt , czy opcja ta nie jest zaznaczona, aby automatycznie kompilować pliki maszynopisu, które nie są częścią projektu, ponieważ mogą one również wiązać zasoby dla pomocniczych projektów innych firm za pomocą węzła lub maszynopisu.
Nie są one niezawodne, każdy z nich musi znaleźć dokładne wąskie gardło, ale stwierdziłem, że często działają one dla mnie i mojego zespołu
źródło
Zwracam tylko uwagę, że zużycie dużej ilości pamięci zostało naprawione w wydaniu z 10 maja 2017 r. - Visual Studio 2017 w wersji 15.2 (26430.04).
Informacje o wersji tutaj: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes
Szczegółowe uwagi dotyczące poprawki tutaj: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html
źródło
Aby wyłączyć usługi językowe w programie VS Code, przejdź do rozszerzeń, a następnie filtruj według rozszerzeń wbudowanych i wyłącz usługę języka TypeScript / Javascript.
W końcu odkryłem to po tym, jak usługa węzła kodu VS spowodowała awarię mojego serwera około milion razy. Irytujące, że tak trudno było znaleźć dokumentację.
źródło
W moim przypadku bot chciał zabić proces node.js i zrobiłem następujące rzeczy, aby zmniejszyć zużycie procesora przez procesy Node.Js, które działają w programie Visual Studio 2019:
npm rebuild fsevents
Teraz wydaje mi się dużo lepiej. Ale niestety nie w 100%.
Mam nadzieję, że to też komuś pomoże. Powodzenia chłopaki! :-)
źródło