Visual Studio 2017 - Quá trình máy chủ Node.JS - Tắt?


132

Tôi đang làm việc trên Ứng dụng ASP.NET trong Visual Studio 2017 và tôi nhận thấy một Node.JS: Quá trình Javascript phía máy chủ chạy ở mức 1,3 GB đến 1,8 GB bộ nhớ. Quá trình công nhân IIS của tôi là kích thước bình thường trong VS 2015.

Ứng dụng của tôi không bao gồm bất kỳ thư viện Node.JS nào. Tôi không thể tìm ra cách tắt Node.JS: Quá trình Javascript phía máy chủ tắt. Nó ăn quá nhiều bộ nhớ cho một cái gì đó tôi không sử dụng cho.

Có cách nào để loại bỏ điều này ngoài việc gỡ cài đặt VS 2017 và chuyển về VS 2015 không?

nhập mô tả hình ảnh ở đây

Giết tiến trình chính trong Trình quản lý tác vụ sẽ không ảnh hưởng đến bất cứ điều gì trong VS, tuy nhiên nếu tôi đi đến tab Chi tiết và tiêu diệt các tiến trình riêng lẻ thì nó gặp sự cố Visual Studio. Tôi đã quay video về những gì đã xảy ra sau khi tôi giết quá trình và chạy trang web địa phương của mình (Xin lỗi về chất lượng, kích thước hình ảnh bị giới hạn ở mức 2MB):

nhập mô tả hình ảnh ở đây


1
Bạn đang sử dụng TypeScript?
SLaks

Chúng tôi đang sử dụng một lượng nhỏ của nó.
Ryan Ternier

Tôi đã kết thúc quá trình đó và không thấy bất kỳ ảnh hưởng xấu nào. Trình biên dịch web biên dịch các tệp LESS mà không có nó.
Glen Little

@GlenLittle Điều đó không hiệu quả, nhưng giống như con mèo ... nó đã trở lại. Tôi tự hỏi nếu nó là cái gì đó được cài đặt lúc đầu và luôn luôn chạy. Tôi vừa cài đặt VS2017 trên lappy của tôi và nó cho tôi tùy chọn cài đặt máy chủ. Tôi sẽ cập nhật thông tin này khi tôi kiểm tra nó
Ryan Ternier 15/03/2017

Bạn có thể gửi một mục phản hồi về điều này? Có một vài tính năng khác nhau trong các công cụ phát triển web sử dụng Node bên dưới trình duyệt (chẳng hạn như JSLint / CSSLint / etc) có thể có liên quan ở đây. Chúng sẽ hiển thị cho bất kỳ dự án web nào, không chỉ TypeScript hoặc Node.
Jimmy

Câu trả lời:


183

Công cụ> Tùy chọn> Trình soạn thảo văn bản> JavaScript / TypeScript> Dịch vụ ngôn ngữ ...

Bỏ chọn 'Kích hoạt dịch vụ ngôn ngữ JavaScript mới'.

Điều này xuất hiện để ngăn quá trình NodeJS bắt đầu.


19
Giải pháp này đã giúp, nên được nâng cao. Nhưng bạn cần phải khởi động lại studio hình ảnh để điều này có hiệu lực.
Madd

14
Tôi đã làm điều này, khởi động lại VS2017 và nó vẫn không ngăn "Node.js: JavaScript phía máy chủ" bắt đầu khi tôi khởi động VS2017. Nó chiếm khoảng 800 MB trên máy của tôi và tôi không thể gỡ lỗi trong Chrome nữa.
Bill

1
Vấn đề tương tự ở đây @Bill - vô hiệu hóa tiện ích mở rộng TypeScript theo câu trả lời của Gabriel dường như đã sắp xếp nó.
Dunc

1
Cái quái gì thế? Tại sao điều đó làm trong cài đặt Trình soạn thảo văn bản? : P
Sнаđошƒаӽ

3
Đây thậm chí không phải là một lựa chọn cho tôi trong thực đơn của mình
BradLaney

29

Tôi đã đưa ra phản hồi về vấn đề này:

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

Tôi đã nhận được phản hồi từ Nhóm MS - anh ấy đã hướng dẫn tôi đến bài đăng này:

https://developercommunity.visualstudio.com/content/probols/27033/nodejs-server-side-javascript- Process-consing-to.html

Quá trình node.exe có dòng lệnh: nhập mô tả hình ảnh ở đây

Có hiệu quả tôi đã nói:

Trong VS 2017, một số tính năng được triển khai trong JavaScript. Node.js được Visual Studio sử dụng để chạy JavaScript đó. Trong số những thứ khác, Node được sử dụng để chạy mã cung cấp các dịch vụ định dạng và intellisense khi người dùng đang chỉnh sửa TypeScript hoặc JavaScript. Đây là một sự thay đổi từ VS 2015.

Nó trả lời câu hỏi của tôi, nhưng đưa ra ánh sáng khác - tại sao bạn cần 1,4 GB bộ nhớ để cung cấp cho tôi thông tin về các tệp JavaScript ... hoặc đây có phải là một trong những giải pháp đã được tích hợp vào VS để nó sử dụng Ít bộ nhớ hơn không? Bạn đã đạt đến giới hạn 2GB (4GB) của các quy trình 32 bit? Câu hỏi câu hỏi.


Quả thực đó là một điều để làm cho quá trình VS chính trở nên nhạy hơn và tối ưu hóa hiệu suất bằng cách đưa một số thứ nhất định như Intellisense vào một quy trình khác và với nhiều ram hơn cho mỗi quy trình 32 bit. Nhưng điều đó không quan trọng đối với chúng tôi trong trường hợp này. Những gì tôi đã tìm thấy là Node tiêu thụ nhiều bộ nhớ hơn nếu bạn có nhiều tệp mã nguồn mở hơn và kích hoạt Intellisense. Nếu bạn thực sự thiếu bộ nhớ, hãy thử nghiệm tắt Intellisense và các tính năng khác mà bạn có thể làm mà không cần.
dùng1306322

2
Nó đã có tác động ngược lại đối với tôi và khiến VS2017 trở nên lười biếng (ý định chơi chữ) mà tôi sẽ quay trở lại VS2015. Tôi thấy thật kỳ lạ khi MS phải sử dụng các khung bên ngoài của bên thứ 3 để làm một việc đơn giản như Intellisense. Đó luôn là một trong những thế mạnh của họ ... và bây giờ? Tôi đã vô hiệu hóa TypeScript và Node.js và nếu tôi chỉ nhìn vào Chrome VS2017 bị treo quá tệ, đôi khi tôi phải khởi động lại. Vì vậy, trở lại với Firefox và VS2015 cho tôi, ít nhất là bây giờ. Và đây là trên i7, RAM 16GM và tất cả các thiết lập SSD với Win10 Pro. Gây sốc.
Neville

theo bài đăng được tham chiếu ở đây ... Việc vô hiệu hóa tiện ích mở rộng TypeScript là một công việc hiện tại, ít nhất là đối với tôi. Nhấp vào Công cụ, Tiện ích mở rộng và Cập nhật, tìm kiếm "TypeScript" và tắt nó. Khởi động lại Visual Studio.
vỗ capozzi

Chà, điều đó giải thích tại sao Intellisense đã xuống địa ngục.
Andy

19

Bạn phải tắt hỗ trợ TypeScript trên Visual Studio:

Công cụ> Tiện ích mở rộng và Cập nhật> TypeScript cho Microsoft Visual Studio> Tắt

Sau đó, chỉ cần khởi động lại Visual Studio, và bạn tốt để đi.


1
vẫn chạy sau khi tôi làm theo các bước này
Jervie Vitriolo

1
Vẫn chạy. Điều này không làm gì cả.
BradLaney

16

Câu trả lời của Ryan Ternier đã chỉ cho tôi những gì tôi tin là đúng hướng. Theo liên kết của anh ấy ( https://developercommunity.visualstudio.com/content/probols/27033/nodejs-server-side-javascript- process -consing-to.html , ngay bên dưới câu trả lời được chấp nhận.

Đây là câu trả lời của Bowden Kelly:

Quá trình nút mà bạn đang thấy đang cung cấp năng lượng cho dịch vụ ngôn ngữ JavaScript. Bạn sẽ thấy quá trình này xuất hiện bất cứ khi nào bạn chỉnh sửa tệp JS, tệp TS hoặc bất kỳ tệp nào có JS / TS bên trong (html, cshtml, v.v.). Quá trình này là sức mạnh của IntelliSense, điều hướng mã, định dạng và các tính năng chỉnh sửa khác và nó thực hiện điều này bằng cách phân tích toàn bộ bối cảnh của dự án của bạn. Nếu bạn có nhiều tệp .js trong dự án của mình, điều này có thể trở nên lớn, nhưng nhiều khả năng vấn đề là bạn có rất nhiều tệp thư viện đang được phân tích. Theo mặc định, chúng tôi sẽ quét mọi tệp .js / .ts trong dự án của bạn. Nhưng bạn có thể ghi đè hành vi này và điều chỉnh dịch vụ ngôn ngữ để chỉ tập trung vào mã của bạn. Để thực hiện việc này, hãy tạo tsconfig.json trong thư mục gốc của dự án với các cài đặt sau:

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

Khi tôi đã thêm thư mục với tất cả các thư viện tập lệnh của mình vào tệp tsconfig.json, cuộc sống lại tốt đẹp.


Sau khi hộp xà phòng của tôi rên rỉ trong câu trả lời trước đó, điều này dường như đã tiết kiệm trong ngày !!! Một điều đơn giản như vậy nhưng tối nghĩa và chỉ mất ba ngày chiến đấu với VS2017 để cuối cùng tìm thấy điều này!
Neville

Việc thêm tệp này dẫn đến tất cả các loại lỗi TypeScript khi tôi xây dựng dự án. Loại bỏ nó và các lỗi đã biến mất.
John81

4

Cách giải quyết bẩn nhất từ ​​trước đến nay: chỉ đổi tên ServiceHub.Host.Node.x86.exe thành thứ khác. Đã không làm phiền tôi kể từ đó. Khi (nếu) bạn thực sự cần nó, chỉ cần đổi tên lại.

Một thủ thuật tương tự hoạt động trong Adobe Photoshop cũng chạy Node vì một số lý do tôi chưa phát hiện ra trong quy trình làm việc thông thường của mình.


Hóa ra ...

Bạn không thể đổi tên nó và mong mọi thứ tiếp tục hoạt động. Ai biết!

Rõ ràng thủ thuật đổi tên này chỉ hoạt động nếu bạn tạm dừng quá trình VS và tiêu diệt Node, sau đó tiếp tục VS. Nếu bạn cố khởi chạy VS với tệp exe Node được đổi tên, nó sẽ bị sập khi mở một dự án với "lỗi cứng không xác định". Ngoài ra, trong khi làm việc với một dự án đã được tải, bộ đếm tham chiếu lười biếng ở trên các phương thức và thuộc tính sẽ không hoạt động vì dường như điều đó phụ thuộc vào Node ở đó bằng cách nào đó.

Vì vậy, có thể ổn khi chỉ tạm dừng quá trình Node và để Windows hoán đổi bộ nhớ của nó từ ram lên ổ cứng, mà không đổi tên exe để bạn có thể khởi động lại VS sau mà không gặp rắc rối đổi tên. Nếu bạn sẵn sàng sống với hậu quả, đó là.


Thật không may, tôi nghĩ rằng có một số mã sẽ phát hiện nếu quá trình nút không phản hồi và thay vào đó sẽ khởi chạy một mã mới. Tôi không quen thuộc với phần mã VS đó, nhưng đó là cách nó được mô tả với tôi.
Jimmy

Tôi luôn thích ý tưởng tước đoạt bằng vũ lực , bạn biết ý tôi là gì ... ;-)
Sнаđошƒаӽ

3

Một cái gì đó có thể giúp các dự án giảm thiểu trọng lượng của nodejs: là gán lại phiên bản nút được sử dụng trong Công cụ> Tùy chọn> Dự án và Giải pháp> Quản lý gói web thành phiên bản 64 bit đã cài đặt. Studio vẫn sẽ khởi chạy Node nội bộ của nó cho một cá thể tsserver.js, nhưng bất kỳ bản thảo nào trong dự án sẽ mặc định là phiên bản được cung cấp - và điều này đã giúp tôi tận mắt.

Ngoài ra, một lần khác tôi thấy dịch vụ ngôn ngữ sắp ngừng hoạt động, tôi phát hiện ra bằng cách sử dụng một đơn giản tsconfig.jsonphía trên các thư mục được sử dụng làm kho lưu trữ, và chỉ định skipLibCheck: truevà thêm node_modules để loại trừ - giúp ích rất nhiều cho dịch vụ và một tệp thực hiện tất cả các thư mục bên dưới nó, bất kể tài liệu tham khảo dự án trực tiếp. PS - nếu bạn vẫn muốn hỗ trợ intellisense JavaScript, hãy đảm bảo đặt tùy chọn allowJs: truenoEmit: true.

Cuối cùng, xác minh trong Tùy chọn Bản in trong Công cụ> Tùy chọn> Trình soạn thảo văn bản> Javascript / Bản mô tả> Dự án mà nó không được kiểm tra để Tự động biên dịch các tệp Bản thảo không phải là một phần của dự án vì điều đó cũng có thể liên kết các tài nguyên cho các dự án của bên thứ 3 phụ trợ sử dụng nút hoặc bản thảo.

Đây không phải là bằng chứng ngu ngốc, mỗi người phải tìm ra nút cổ chai chính xác của họ, nhưng tôi đã tìm thấy những điều này đã làm việc cho tôi và nhóm của tôi thường xuyên hơn không


Điều này làm việc cho tôi. Đã thêm 'C: \ Program Files \ nodejs' (nơi trước đây tôi đã cài đặt NodeJS theo cách thủ công), vào đầu danh sách này và quá trình Node.js đã tải từ 50-60% CPU xuống 0%.
andynil

1

Chỉ cần lưu ý rằng mức tiêu thụ bộ nhớ cao đã được khắc phục trong Bản phát hành ngày 10 tháng 5 năm 2017 - Visual Studio 2017 phiên bản 15.2 (26430.04).

Ghi chú phát hành tại đây: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

Ghi chú cụ thể về cách khắc phục tại đây: https://developercommunity.visualstudio.com/content/pro Hiệu / 17033 / nodejs-server-side-javascript-process -consing-to.html


2
Chạy 15.2 (26430.16) tại đây và tôi nói rằng có thể họ đã khắc phục một vấn đề tiêu thụ bộ nhớ cao một cách lố bịch nhưng chỉ giảm xuống mức tiêu thụ bộ nhớ cao :)
PJUK

1
Đã đồng ý. Vấn đề chủ yếu là do nút.j.j được viết kém như thế nào ở vị trí đầu tiên (trong đó các hàm "đối tượng" được sao chép lặp đi lặp lại) - sau đó, các khung để sửa lỗi thiếu sót của JS sẽ luôn khiến mọi thứ chậm hơn. Đây là những gì xảy ra khi bạn có người Linux phát triển cho Windows - một mớ hỗn độn lớn.
MC9000

Tôi đã báo cáo vấn đề này tại github.com/aspnet/JavaScriptService/issues/1298 Tôi đã quan sát vấn đề này với VS 2015 vào năm 2015 với các dự án JavaScript, nhưng vấn đề trở nên tồi tệ hơn.
thế giới tuyệt vời

vẫn còn 2 gb vào năm 2017
Geomorillo

Không cố định cho tôi. Vẫn ăn hết tấn bộ nhớ với phiên bản 15.6.6
John81

0

Để tắt Dịch vụ ngôn ngữ trong Mã VS, hãy chuyển đến tiện ích mở rộng, sau đó lọc các tiện ích mở rộng dựng sẵn và vô hiệu hóa dịch vụ ngôn ngữ TypeScript / Javascript.

Cuối cùng tôi đã phát hiện ra điều này sau khi dịch vụ nút của mã VS bị sập máy chủ của tôi khoảng một triệu lần. Khó chịu vì điều này rất khó để tìm tài liệu về.

vô hiệu hóa phần mở rộng dịch vụ ngôn ngữ dựng sẵn ts / js


0

Trong trường hợp của tôi, tôi đã làm bot muốn giết tiến trình node.js và tôi đã làm theo những điều sau để giảm mức tiêu thụ CPU của Node.Js chạy trong Visual Studio 2019:

  • Tôi đã xóa thư mục "Tệp chương trình (x86) / MicrosoftSDK / TypeScript
  • tôi chạy npm rebuild fsevents
  • Tôi đã tắt trong trình duyệt Chrome: Cài đặt-Hệ thống-Tiếp tục chạy các ứng dụng nền ...

Dường như với tôi tốt hơn nhiều bây giờ. Nhưng không đáng tiếc 100%.

Hy vọng điều này sẽ giúp ai đó ngoài đó quá. Chúc các bạn may mắn! :-)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.