Visual Studio 2017 - Node.JS Sunucu İşlemi - Kapatılsın mı?


132

Visual Studio 2017'de bir ASP.NET Uygulaması üzerinde çalışıyorum ve bir Node.JS: 1,3 GB ila 1,8 GB bellekte çalışan Sunucu tarafı Javascript işlemi fark ediyorum. IIS çalışan sürecim, VS 2015'teki normal boyuttadır.

Uygulamam herhangi bir Node.JS kitaplığı içermiyor. Bu Node.JS: Sunucu tarafı Javascript işlemini nasıl kapatacağımı çözemiyorum. Benim ihtiyacım olmayan bir şey için çok fazla hafıza yiyor.

Bunu ortadan kaldırmanın VS 2017'yi kaldırmanın ve VS 2015'e geri dönmenin bir yolu var mı?

görüntü açıklamasını buraya girin

Görev Yöneticisi'ndeki ana İşlemi sonlandırmak VS'deki hiçbir şeyi etkilemez, ancak Ayrıntılar sekmesine gidip çalışan işlemleri ayrı ayrı sonlandırırsam Visual Studio'yu çöker. İşlemi bitirdikten ve yerel web sayfamı çalıştırdıktan sonra olanların bir videosunu çektim (kalite için üzgünüm, bu yüzden görüntü boyutu 2MB ile sınırlı):

görüntü açıklamasını buraya girin


1
TypeScript kullanıyor musunuz?
SLaks

Küçük bir miktarını kullanıyoruz.
Ryan Ternier

Bu süreci sonlandırdım ve herhangi bir kötü etki görmedim. Web derleyicisi LESS dosyalarını onsuz derler.
Glen Little

@GlenLittle Bu işe yarıyor, ama kedi gibi ... geri geldi. Başlangıçta kurulu bir şey olup olmadığını merak ediyorum ve her zaman çalışıyor mu? VS2017'yi lappy'ye yeni kurdum ve bana sunucuyu kurma seçeneği verdi. Bunu test ettiğimde güncelleyeceğim
Ryan Ternier

Bununla ilgili bir geri bildirimde bulunabilir misiniz? Web geliştirme araçlarında, başlık altında Node kullanan (JSLint / CSSLint / vb. Gibi) burada yer alabilecek birkaç farklı özellik vardır. Bunlar, yalnızca TypeScript veya Node değil, herhangi bir web projesi için görünecektir.
Jimmy

Yanıtlar:


184

Araçlar> Seçenekler> Metin Düzenleyici> JavaScript / TypeScript> Dil Hizmeti ...

"Yeni JavaScript dil hizmetini etkinleştir" seçeneğinin işaretini kaldırın.

Bu, NodeJS işleminin başlamasını engelliyor gibi görünüyor.


19
Bu çözüm yardımcı oldu, oylanmalı. Ancak bunun etkili olması için visual studio'yu yeniden başlatmanız gerekiyor.
madd

14
Bunu yaptım, VS2017'yi yeniden başlattım ve yine de "Node.js: Sunucu tarafı JavaScript" in VS2017'yi başlattığımda başlamasını engellemedi. Makinemde yaklaşık 800MB var ve artık Chrome'da hata ayıklayamıyorum.
Bill

1
Buradaki aynı sorun @ Bill - Gabriel'in cevabına göre TypeScript uzantısını devre dışı bırakmak yine de sıraladı.
Dunc

1
Ne oluyor be? Metin Düzenleyici ayarlarında bu neden oluyor? : P
Sнаđошƒаӽ

3
Bu benim menülerimde benim için bir seçenek bile değil
BradLaney

29

Bu konuyla ilgili geri bildirimde bulundum:

https://developercommunity.visualstudio.com/content/problem/31406/visual-studio-2017-nodejs-server-process-turn-off.html

Bir MS Ekibinden yanıt aldım - beni şu gönderiye yönlendirdi:

https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629

Node.exe işleminin komut satırı vardır: görüntü açıklamasını buraya girin

Etkili bir şekilde bana söylendi:

VS 2017'de, JavaScript'te çeşitli özellikler uygulanmaktadır. Node.js, bu JavaScript'i çalıştırmak için Visual Studio tarafından kullanılır. Node, diğer şeylerin yanı sıra, bir kullanıcı TypeScript veya JavaScript'i düzenlerken biçimlendirme ve intellisense hizmetleri sağlayan kodu çalıştırmak için kullanılır. Bu, VS 2015'ten bir değişikliktir.

Soruma cevap veriyor, ancak başka bir şeyi gün ışığına çıkarıyor - JavaScript dosyalarında bana zeka vermek için neden 1,4 GB belleğe ihtiyacınız var ... yoksa bu, VS'de yerleşik olan çözümlerden biri mi, böylece Daha Az Bellek kullanıyor, böylece yapmıyor 32 bit işlemlerin 2 GB (4 GB) sınırına ulaşmadınız mı? Sorular sorular sorular.


Aslında, Intellisense gibi belirli şeyleri başka bir sürece aktararak ve her 32 bit işlem için daha fazla ram kullanarak ana VS sürecini daha duyarlı hale getirmek ve performansı optimize etmek bir şeydir. Ancak bu durumda bizim için önemli değil. Bulduğum şey, daha fazla kaynak kod dosyanız varsa ve Intellisense etkinse, Node'un daha fazla bellek tüketmesidir. Belleğiniz gerçekten azalıyorsa, Intellisense ve onsuz yapabileceğiniz diğer özellikleri devre dışı bırakmayı deneyin.
user1306322

2
Benim için tam tersi bir etkiye sahipti ve VS2017'yi o kadar tembel (amaçlanan) yaptı ki, VS2015'e geri dönüyorum. MS'in Intellisense kadar basit bir şey yapmak için 3. taraf harici çerçeveler kullanmak zorunda kalmasını saçma buluyorum. Bu her zaman güçlü yanlarından biri olmuştur ... peki şimdi? TypeScript ve Node.js'yi devre dışı bıraktım ve Chrome VS2017'ye bakarsam o kadar kötü kilitleniyor ki bazen yeniden başlatmam gerekiyor. Bu yüzden benim için Firefox ve VS2015'e geri dönelim, en azından şimdilik. Ve bu bir i7, 16GM RAM ve Win10 Pro ile tüm SSD kurulumunda. Şok edici.
Neville

burada atıfta bulunulan gönderiye göre ... TypeScript uzantısını devre dışı bırakmak şu an için bir geçici çözüm, en azından benim için. Araçlar, Uzantılar ve Güncellemeler'i tıklayın, "TypeScript" öğesini arayın ve devre dışı bırakın. Visual Studio'yu yeniden başlatın.
pat capozzi

Bu, Intellisense'in neden cehenneme gittiğini açıklıyor.
Andy

19

Visual Studio'da TypeScript desteğini devre dışı bırakmanız gerekir:

Araçlar> Uzantılar ve Güncellemeler> Microsoft Visual Studio için TypeScript> Devre Dışı Bırak

Bundan sonra, sadece Visual Studio'yu yeniden başlatın ve gitmekte fayda var.


1
Bu adımları takip sonrasında hala çalışıyor
Jervie Vitriolo

1
Hala koşuyor. Bu hiçbir şey yapmadı.
BradLaney

16

Ryan Ternier'in cevabı beni doğru yönde olduğuna inandığım şeye işaret etti. Bağlantısını takip etmek ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) beni Bowden Kelly'nin cevabına götürdü , kabul edilen cevabın hemen altında.

İşte Bowden Kelly'nin cevabı:

Gördüğünüz düğüm işlemi JavaScript dil hizmetini güçlendiriyor. Bir JS dosyasını, TS dosyasını veya içinde JS / TS bulunan herhangi bir dosyayı (html, cshtml, vb.) Her düzenlediğinizde bu işlemin göründüğünü göreceksiniz. Bu işlem, IntelliSense, kod gezintisi, biçimlendirme ve diğer düzenleme özelliklerini destekleyen şeydir ve bunu projenizin tüm bağlamını analiz ederek yapar. Projenizde çok fazla .js dosyanız varsa, bu büyüyebilir, ancak büyük olasılıkla sorun, analiz edilmekte olan çok sayıda kitaplık dosyanız olmasıdır. Varsayılan olarak, projenizdeki her .js / .ts dosyasını tarayacağız. Ancak bu davranışı geçersiz kılabilir ve dil hizmetini yalnızca kodunuza odaklanacak şekilde ayarlayabilirsiniz. Bunu yapmak için, aşağıdaki ayarlarla proje kökünüzde bir tsconfig.json oluşturun:

    {
    "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
        ]
    }
}

Tüm komut dosyası kitaplıklarımı içeren klasörü tsconfig.json dosyasına ekledikten sonra hayat yeniden güzeldi.


Önceki cevapta sabun kutumun sızlanmasından sonra, bu günü kurtarmış gibi görünüyor !!! Böylesine basit bir şey, ancak çok belirsiz ve nihayet bunu bulmam için VS2017 ile savaşmam sadece üç gün sürdü!
Neville

Bu dosyayı eklemek, projeyi oluşturduğumda her türlü TypeScript hatasına neden oluyor. Kaldırıldı ve hatalar gitti.
John81

4

Şimdiye kadarki en kirli çözüm: sadece ServiceHub.Host.Node.x86.exebaşka bir şeye yeniden adlandırın . O zamandan beri beni rahatsız etmedi. Gerçekten ihtiyacınız olduğunda (eğer), sadece yeniden adlandırın.

Aynı numara, normal iş akışımda henüz keşfetmediğim bir nedenle Node'u çalıştıran Adobe Photoshop'ta da çalışıyor.


Görünüşe göre ...

Yeniden adlandırıp bir şeylerin çalışmaya devam etmesini bekleyemezsiniz. Kim biliyordu!

Görünüşe göre bu yeniden adlandırma hilesi yalnızca VS işlemini askıya alıp Node'u öldürüp ardından VS'yi devam ettirdiğinizde işe yarar. VS'yi Node exe dosyası yeniden adlandırılmış olarak başlatmaya çalışırsanız, "bilinmeyen bir sabit hata" içeren bir proje açılırken çökecektir. Ayrıca, önceden yüklenmiş bir proje üzerinde çalışırken, yöntemlerin ve özelliklerin üzerindeki tembel referans sayacı çalışmaz çünkü görünüşe göre bu, bir şekilde Node'un orada olmasına bağlıdır.

Bu nedenle, Node sürecini askıya almak ve Windows'un disk belleği belleğini exe'yi yeniden adlandırmadan sabit sürücüye değiştirmesine izin vermek uygun olabilir, böylece yeniden adlandırma zorluğundan geçmeden VS'yi daha sonra yeniden başlatabilirsiniz. Tabii sonuçlarla yaşamaya istekliysen.


Ne yazık ki, düğüm işleminin tepkisiz olup olmadığını algılayacak ve bunun yerine yenisini başlatacak bazı kodlar olduğunu düşünüyorum. VS kodunun bu kısmına aşina değilim, ama bana böyle anlatıldı.
Jimmy


3

Projelerin nodejs ağırlığını azaltmasına yardımcı olabilecek bir şey: Araçlar> Seçenekler> Projeler ve Çözümler> Web Paketi Yönetimi altında kullanılan düğüm sürümünü kurulu bir 64 bit sürüme yeniden atamaktır . Studio, bir tsserver.js örneği için dahili Düğümünü başlatmaya devam edecek, ancak projedeki tüm typcript'ler varsayılan olarak sağlanan sürüme sahip olacak - ve bu bana ilk elden yardımcı oldu.

Ayrıca, dil hizmetinin çalışmakta olduğunu bulduğum başka bir sefer tsconfig.json, depo olarak kullanılan dizinlerin üzerinde basit bir kullanım keşfettim skipLibCheck: trueve dışlamak için node_modules'i belirledim ve ekledim - hizmet boyunca muazzam bir şekilde yardımcı oldu ve bir dosya altındaki tüm klasörleri yapıyor doğrudan proje referanslarına bakılmaksızın. Not - Hala JavaScript intellisense desteğini istiyorsanız, allowJs: trueve noEmit: trueseçeneğini ayarladığınızdan emin olun .

Son olarak, Araçlar> Seçenekler> Metin Düzenleyici> Javascript / Typescript> Project altındaki TypeScript Seçeneklerinde , bir projenin parçası olmayan Typescript dosyalarını otomatik olarak derlemek için işaretlenmediğini doğrulayın çünkü bu, yardımcı üçüncü taraf projeleri için kaynakları da bağlayabilir. düğüm veya typcript kullanarak.

Bunlar aptalca değildir, her birinin kesin darboğazlarını bulması gerekir, ancak bunların benim ve ekibim için hiç olmadığı kadar sık ​​işe yaradığını gördüm.


Bu benim için çalıştı. Bu listenin başına 'C: \ Program Files \ nodejs' (daha önce manuel olarak NodeJS'yi kurduğum yer) eklendi ve Node.js işlemi% 50-60 CPU yükünden% 0'a çıktı.
andynil

1

Yüksek bellek tüketiminin 10 Mayıs 2017 - Visual Studio 2017 sürüm 15.2 (26430.04) Sürümünde düzeltildiğine dikkat edin.

Buradaki Sürüm Notları: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Buradaki düzeltmeyle ilgili özel notlar: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html


2
Burada 15.2 (26430.16) yayınlanıyor ve belki gülünç bir şekilde - yüksek bellek tüketimi sorununu
çözdüklerini

1
Kabul. Sorun çoğunlukla node.js'nin ilk etapta ne kadar kötü yazılmış olmasından kaynaklanmaktadır (bu "nesne" işlevlerinin tekrar tekrar kopyalanması) - daha sonra, JS'nin eksikliklerini yamalamak için çerçeveler her zaman işleri daha yavaş hale getirecektir. Linux insanları Windows için geliştirdiğinde olan budur - büyük bir dolambaçlı karışıklık.
MC9000

Bu sorunu github.com/aspnet/JavaScriptServices/issues/1298 adresinde bildirdim. Bu sorunu 2015 yılında JavaScript projelerinde VS 2015'te gözlemledim, ancak sorun daha da kötüleşiyor.
wonderful world

2017'de hala 2 gb gidiyor
Geomorillo

Benim için sabit değil. Hala 15.6.6 sürümüyle tonlarca bellek tüketiyor
John81

0

VS Code'daki Dil Hizmetlerini devre dışı bırakmak için, uzantılara gidin, ardından yerleşik uzantılara filtre uygulayın ve TypeScript / Javascript dil hizmetini devre dışı bırakın.

Bunu, VS kodunun düğüm hizmeti sunucumu yaklaşık bir milyon kez çökerttikten sonra nihayet keşfettim. Bununla ilgili belgeleri bulmanın çok zor olması can sıkıcı.

yerleşik ts / js dil hizmeti uzantısını devre dışı bırak


0

Benim durumumda bot node.js işlemini öldürmek istedim ve CPU tüketimini düşürmek için aşağıdaki şeyleri yaptım ov Node.Js işlemleri Visual Studio 2019 altında çalışan:

  • "Program Files (x86) / MicrosoftSDK / TypeScript" klasörünü kaldırdım
  • koşarım npm rebuild fsevents
  • Chrome tarayıcısında kapattım: Ayarlar-Sistem-Arka plan uygulamalarını çalıştırmaya devam et ...

Bana şimdi çok daha iyi görünüyor. Ama% 100 maalesef değil.

Umarım bu da dışarıdaki birine yardımcı olur. İyi şanslar arkadaşlar! :-)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.