Visual Studio 2017 - กระบวนการเซิร์ฟเวอร์ Node.JS - ปิด?


136

ฉันกำลังทำงานกับแอป ASP.NET ใน Visual Studio 2017 และฉันสังเกตเห็น Node.JS: กระบวนการ Javascript ฝั่งเซิร์ฟเวอร์ทำงานที่หน่วยความจำ 1.3GB ถึง 1.8GB กระบวนการผู้ปฏิบัติงาน IIS ของฉันมีขนาดปกติใน VS 2015

แอพของฉันไม่มีไลบรารี Node.JS ใด ๆ ฉันไม่สามารถหาวิธีปิด Node.JS นี้: กระบวนการ Javascript ฝั่งเซิร์ฟเวอร์ได้ มันกินหน่วยความจำมากเกินไปสำหรับบางสิ่งที่ฉันไม่มีประโยชน์

มีวิธีฆ่าสิ่งนี้นอกเหนือจากการถอนการติดตั้ง VS 2017 และเปลี่ยนกลับไปใช้ VS 2015 หรือไม่?

ป้อนคำอธิบายภาพที่นี่

การฆ่ากระบวนการหลักในตัวจัดการงานจะไม่ส่งผลกระทบใด ๆ ใน VS แต่ถ้าฉันไปที่แท็บรายละเอียดและฆ่ากระบวนการที่กำลังทำงานอยู่แต่ละกระบวนการจะทำให้ Visual Studio ล้มเหลว ฉันถ่ายวิดีโอเกี่ยวกับสิ่งที่เกิดขึ้นหลังจากที่ฉันฆ่ากระบวนการและเรียกใช้หน้าเว็บในพื้นที่ของฉัน (ขออภัยในคุณภาพขนาดภาพ จำกัด ไว้ที่ 2MB):

ป้อนคำอธิบายภาพที่นี่


1
คุณใช้ TypeScript หรือไม่
— SLaks

เรากำลังใช้มันเพียงเล็กน้อย
— Ryan Ternier

ฉันจบกระบวนการนั้นแล้วและยังไม่เห็นผลร้ายใด ๆ เว็บคอมไพเลอร์รวบรวมไฟล์น้อยกว่าโดยไม่มีมัน
— Glen Little

@GlenLittle ที่ทำงาน แต่เหมือนแมว ... มันกลับมา ฉันสงสัยว่าเป็นสิ่งที่ติดตั้งไว้ตั้งแต่เริ่มต้นและทำงานอยู่ตลอดเวลา ฉันเพิ่งติดตั้ง VS2017 บน lappy ของฉันและมันทำให้ฉันมีตัวเลือกในการติดตั้งเซิร์ฟเวอร์ ฉันจะอัปเดตเมื่อฉันทดสอบ
— Ryan Ternier

คุณสามารถส่งความคิดเห็นเกี่ยวกับเรื่องนี้ได้หรือไม่? มีคุณสมบัติที่แตกต่างกันเล็กน้อยในเครื่องมือนักพัฒนาเว็บที่ใช้ Node ภายใต้ประทุน (เช่น JSLint / CSSLint / ฯลฯ ) ที่อาจเกี่ยวข้องที่นี่ สิ่งเหล่านี้จะปรากฏขึ้นสำหรับโครงการเว็บใด ๆ ไม่ใช่เฉพาะ TypeScript หรือ Node
— Jimmy

คำตอบ:


189

เครื่องมือ> ตัวเลือก> ตัวแก้ไขข้อความ> JavaScript / TypeScript> บริการภาษา ...

ยกเลิกการเลือก 'เปิดใช้งานบริการภาษา JavaScript ใหม่'

รีสตาร์ท Visual Studio

สิ่งนี้ดูเหมือนจะป้องกันไม่ให้กระบวนการ NodeJS เริ่มต้น


19
โซลูชันนี้ช่วยได้ควรได้รับการโหวต แต่คุณต้องรีสตาร์ท Visual Studio เพื่อให้สิ่งนี้มีผล
— madd

14
ฉันทำสิ่งนี้รีบูต VS2017 แต่ยังไม่สามารถป้องกันไม่ให้ "Node.js: JavaScript ฝั่งเซิร์ฟเวอร์" เริ่มทำงานเมื่อฉันเริ่ม VS2017 เครื่องของฉันทำงานได้ประมาณ 800MB และฉันไม่สามารถแก้ไขข้อบกพร่องใน Chrome ได้อีกต่อไป
— บิล

1
ปัญหาเดียวกันที่นี่ @Bill - การปิดใช้งานส่วนขยาย TypeScript ตามคำตอบของ Gabriel ดูเหมือนจะเรียงลำดับแล้ว
— Dunc

1
ห่าอะไร? เหตุใดจึงทำในการตั้งค่าตัวแก้ไขข้อความ : P
— Sнаđошƒаӽ

3
นี่ไม่ใช่ตัวเลือกสำหรับฉันในเมนูของฉัน
— BradLaney

30

ฉันส่งความคิดเห็นเกี่ยวกับปัญหานี้:

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

ฉันได้รับคำตอบกลับจากทีม MS - เขานำฉันไปที่โพสต์นี้:

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

กระบวนการ node.exe มีบรรทัดคำสั่ง: ป้อนคำอธิบายภาพที่นี่

ฉันได้รับแจ้งอย่างมีประสิทธิภาพ:

ใน VS 2017 มีการใช้คุณสมบัติหลายอย่างใน JavaScript Visual Studio ใช้ Node.js เพื่อเรียกใช้ JavaScript นั้น เหนือสิ่งอื่นใด Node ใช้เพื่อรันโค้ดที่ให้บริการการจัดรูปแบบและ intellisense เมื่อผู้ใช้แก้ไข TypeScript หรือ JavaScript นี่คือการเปลี่ยนแปลงจาก VS 2015

มันตอบคำถามของฉัน แต่นำไปสู่ความกระจ่างอีกครั้ง - ทำไมคุณถึงต้องใช้หน่วยความจำ 1.4GB เพื่อให้ฉันใช้งานไฟล์ JavaScript ได้ ... หรือนี่คือหนึ่งในโซลูชันที่สร้างขึ้นใน VS ดังนั้นจึงใช้หน่วยความจำน้อยลงดังนั้นจึงไม่ ไม่ถึงขีด จำกัด 2GB (4GB) ของกระบวนการ 32 บิต? คำถามคำถามคำถาม


แน่นอนว่ามันเป็นสิ่งที่จะทำให้กระบวนการ VS หลักตอบสนองได้ดีขึ้นและเพิ่มประสิทธิภาพการทำงานโดยการลดทอนบางอย่างเช่น Intellisense ไปสู่กระบวนการอื่นและมี ram มากขึ้นสำหรับแต่ละกระบวนการ 32 บิต แต่นั่นไม่สำคัญสำหรับเราในกรณีนี้ สิ่งที่ฉันพบคือ Node ใช้หน่วยความจำมากขึ้นหากคุณเปิดไฟล์ซอร์สโค้ดเพิ่มเติมและเปิดใช้งาน Intellisense หากคุณมีหน่วยความจำเหลือน้อยให้ทดลองปิดการใช้งาน Intellisense และคุณสมบัติอื่น ๆ ที่คุณไม่สามารถทำได้
— user1306322

2
มันมีผลตรงกันข้ามสำหรับฉันและทำให้ VS2017 ขี้เกียจ (เล่นสำนวนตั้งใจ) จนฉันจะกลับไป VS2015 ฉันพบว่ามันไร้สาระที่ MS ต้องใช้เฟรมเวิร์กภายนอกของบุคคลที่สามเพื่อทำบางสิ่งที่เรียบง่ายเหมือน Intellisense นั่นเป็นหนึ่งในจุดแข็งของพวกเขามาโดยตลอด ... และตอนนี้? ฉันปิดการใช้งาน TypeScript และ Node.js แล้วและถ้าฉันเพิ่งดู Chrome VS2017 แฮงค์แย่มากฉันต้องรีบูตในบางครั้ง ดังนั้นกลับไปที่ Firefox และ VS2015 สำหรับฉันอย่างน้อยก็ตอนนี้ และนี่คือ i7, 16GM RAM และการตั้งค่า SSD ทั้งหมดด้วย Win10 Pro น่าตกใจ.
— Neville

ตามโพสต์ที่อ้างถึงที่นี่ ... การปิดใช้งานส่วนขยาย TypeScript เป็นวิธีแก้ปัญหาในขณะนี้อย่างน้อยสำหรับฉัน คลิกเครื่องมือส่วนขยายและการอัปเดตค้นหา "TypeScript" และปิดใช้งาน รีสตาร์ท Visual Studio
— pat capozzi

นั่นอธิบายได้ว่าทำไม Intellisense ถึงตกนรก
— Andy

19

คุณต้องปิดใช้งานการสนับสนุน TypeScript บน Visual Studio:

เครื่องมือ> ส่วนขยายและการอัปเดต> TypeScript สำหรับ Microsoft Visual Studio> ปิดใช้งาน

หลังจากนั้นเพียงรีสตาร์ท Visual Studio และคุณก็พร้อมใช้งาน


1
ยังคงดำเนินต่อไปหลังจากที่ฉันทำตามขั้นตอนนี้
— Jervie Vitriolo

1
ยังคงทำงานอยู่ สิ่งนี้ไม่ได้ทำอะไรเลย
— BradLaney

18

คำตอบของ Ryan Ternier ชี้ให้ฉันเห็นในสิ่งที่ฉันเชื่อว่าเป็นแนวทางที่ถูกต้อง ตามลิงค์ของเขา ( https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html?childToView=27629#comment-27629 ) นำฉันไปสู่คำตอบของ Bowden Kelly ใต้คำตอบที่ยอมรับ

นี่คือคำตอบของ Bowden Kelly:

กระบวนการโหนดที่คุณเห็นกำลังเปิดใช้งานบริการภาษา JavaScript คุณจะเห็นกระบวนการนี้ปรากฏขึ้นทุกครั้งที่คุณแก้ไขไฟล์ JS, ไฟล์ TS หรือไฟล์ใด ๆ ที่มี JS / TS อยู่ภายใน (html, cshtml ฯลฯ ) กระบวนการนี้เป็นสิ่งที่เพิ่มพลังให้กับ IntelliSense การนำทางโค้ดการจัดรูปแบบและคุณสมบัติการแก้ไขอื่น ๆ และดำเนินการโดยการวิเคราะห์บริบททั้งหมดของโครงการของคุณ หากคุณมีไฟล์. js จำนวนมากในโปรเจ็กต์ของคุณสิ่งนี้อาจมีขนาดใหญ่ แต่ปัญหามากกว่านั้นคือคุณมีไฟล์ไลบรารีจำนวนมากที่กำลังวิเคราะห์ ตามค่าเริ่มต้นเราจะสแกนไฟล์. js / .ts ทุกไฟล์ในโปรเจ็กต์ของคุณ แต่คุณสามารถลบล้างพฤติกรรมนี้และปรับแต่งบริการภาษาเพื่อเน้นเฉพาะโค้ดของคุณได้ ในการดำเนินการนี้ให้สร้าง tsconfig.json ในรูทโปรเจ็กต์ของคุณด้วยการตั้งค่าต่อไปนี้:

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

เมื่อฉันเพิ่มโฟลเดอร์ที่มีไลบรารีสคริปต์ทั้งหมดลงในไฟล์ tsconfig.json ชีวิตก็กลับมาดีอีกครั้ง


หลังจากกล่องสบู่ของฉันคร่ำครวญในคำตอบก่อนหน้านี้ดูเหมือนว่าจะช่วยชีวิตได้ทั้งวัน !!! ช่างเป็นสิ่งที่เรียบง่าย แต่คลุมเครือและใช้เวลาเพียงสามวันในการต่อสู้กับ VS2017 ในที่สุดก็พบสิ่งนี้!
— Neville

การเพิ่มไฟล์นี้นำไปสู่ข้อผิดพลาด TypeScript ทุกชนิดเมื่อฉันสร้างโครงการ ลบออกและข้อผิดพลาดก็หายไป
— John81

4

วิธีแก้ปัญหาที่สกปรกที่สุดที่เคยมีมา: เพียงแค่เปลี่ยนชื่อเป็นServiceHub.Host.Node.x86.exeอย่างอื่น ไม่รบกวนฉันตั้งแต่นั้นมา เมื่อ (ถ้า) คุณต้องการจริงๆเพียงแค่เปลี่ยนชื่อกลับ

เคล็ดลับเดียวกันนี้ใช้ได้กับ Adobe Photoshop ซึ่งเรียกใช้ Node ด้วยเหตุผลบางอย่างที่ฉันยังไม่ค้นพบในเวิร์กโฟลว์ปกติ


ปรากฎว่า ...

คุณไม่สามารถเพียงแค่เปลี่ยนชื่อและคาดหวังให้สิ่งต่างๆทำงานต่อไป ใครจะไปรู้!

เห็นได้ชัดว่าเคล็ดลับการเปลี่ยนชื่อนี้ใช้งานได้ก็ต่อเมื่อคุณระงับกระบวนการ VS และฆ่า Node จากนั้นดำเนินการ VS ต่อ หากคุณพยายามเรียกใช้ VS ด้วยการเปลี่ยนชื่อไฟล์ Node exe มันจะหยุดทำงานเมื่อเปิดโปรเจ็กต์โดยมี "ฮาร์ดข้อผิดพลาดที่ไม่รู้จัก" นอกจากนี้ในขณะที่ทำงานกับโปรเจ็กต์ที่โหลดไปแล้วตัวนับอ้างอิงที่ขี้เกียจข้างต้นวิธีการและคุณสมบัติจะไม่ทำงานเนื่องจากเห็นได้ชัดว่าต้องอาศัยโหนดอยู่ที่นั่น

ดังนั้นจึงอาจเป็นเรื่องปกติที่จะระงับกระบวนการ Node และปล่อยให้ Windows paging สลับหน่วยความจำออกจาก ram ไปยังฮาร์ดไดรฟ์โดยไม่ต้องเปลี่ยนชื่อ exe เพื่อให้คุณสามารถเริ่ม VS อีกครั้งได้ในภายหลังโดยไม่ต้องยุ่งยากกับการเปลี่ยนชื่อ หากคุณเต็มใจที่จะอยู่กับผลที่ตามมานั่นคือ


น่าเสียดายที่ฉันคิดว่ามีโค้ดบางอย่างที่จะตรวจพบว่ากระบวนการโหนดไม่ตอบสนองหรือไม่และเปิดตัวใหม่แทน ฉันไม่คุ้นเคยกับส่วนนั้นของรหัส VS แต่เป็นวิธีที่อธิบายให้ฉันฟัง
— Jimmy

ฉันชอบความคิดของการกีดกันโดยการบังคับคุณรู้ว่าฉันหมายถึงอะไร ... ;-)
— Sнаđошƒаӽ

3

สิ่งที่สามารถช่วยโครงการลดน้ำหนักของโหนด js: คือการกำหนดเวอร์ชันโหนดใหม่ที่ใช้ภายใต้เครื่องมือ> ตัวเลือก> โครงการและโซลูชัน> การจัดการแพ็คเกจเว็บเป็นเวอร์ชัน 64 บิตที่ติดตั้ง Studio จะยังคงเปิด Node ภายในสำหรับอินสแตนซ์ tsserver.js แต่ typescript ใด ๆ ในโปรเจ็กต์จะเริ่มต้นเป็นเวอร์ชันที่ให้มา - และสิ่งนี้ช่วยฉันได้โดยตรง

นอกจากนี้อีกครั้งหนึ่งที่ฉันพบว่าบริการภาษากำลังจะหมดลงฉันค้นพบโดยใช้วิธีง่ายๆtsconfig.jsonเหนือไดเร็กทอรีที่ใช้เป็นที่เก็บและระบุถึงskipLibCheck: trueและเพิ่ม node_modules เพื่อแยกออก - ช่วยอย่างมากในการให้บริการและไฟล์เดียวทำโฟลเดอร์ทั้งหมดที่อยู่ด้านล่าง โดยไม่คำนึงถึงการอ้างอิงโครงการโดยตรง ป.ล. - หากคุณไม่ต้องการให้รองรับ JavaScript intellisense ให้แน่ใจว่าได้ตั้งค่าallowJs: trueและnoEmit: trueตัวเลือก

สุดท้ายให้ตรวจสอบในตัวเลือก typescript ภายใต้เครื่องมือ> ตัวเลือก> ตัวแก้ไขข้อความ> Javascript / typescript> โปรเจ็กต์ว่าไม่ได้ตรวจสอบเพื่อคอมไพล์ไฟล์ typescript โดยอัตโนมัติซึ่งไม่ได้เป็นส่วนหนึ่งของโปรเจ็กต์เนื่องจากสามารถรวมทรัพยากรสำหรับโปรเจ็กต์ของบุคคลที่สามเสริม ใช้โหนดหรือ typescript

สิ่งเหล่านี้ไม่ใช่เรื่องโง่เขลาแต่ละคนต้องหาปัญหาคอขวดที่แน่นอน แต่ฉันพบว่าสิ่งเหล่านี้ได้ผลสำหรับฉันและทีมของฉันบ่อยกว่าไม่


สิ่งนี้ได้ผลสำหรับฉัน เพิ่ม 'C: \ Program Files \ nodejs' (ที่ฉันเคยติดตั้ง NodeJS ด้วยตนเองก่อนหน้านี้) ที่ด้านบนของรายการนี้และกระบวนการ Node.js เปลี่ยนจากโหลด CPU 50-60% เป็น 0%
— andynil

1

เพียงสังเกตว่าการใช้หน่วยความจำสูงได้รับการแก้ไขแล้วในวันที่ 10 พฤษภาคม 2017 - รุ่น Visual Studio 2017 เวอร์ชัน 15.2 (26430.04)

บันทึกประจำรุ่นที่นี่: https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes

หมายเหตุเฉพาะเกี่ยวกับการแก้ไขที่นี่: https://developercommunity.visualstudio.com/content/problem/27033/nodejs-server-side-javascript-process-consuming-to.html


2
เรียกใช้ 15.2 (26430.16) ที่นี่และฉันจะบอกว่าบางทีพวกเขาอาจแก้ไขปัญหาการใช้หน่วยความจำสูงอย่างน่าขัน แต่มีเพียงการปรับลดระดับลงเป็นการใช้หน่วยความจำสูง :)
— PJUK

1
เห็นด้วย ปัญหาส่วนใหญ่เกิดจากการที่ node.js เขียนได้ไม่ดีในตอนแรก (ในฟังก์ชัน "object" นั้นจะถูกจำลองซ้ำแล้วซ้ำเล่า) - จากนั้นอีกครั้งกรอบการแก้ไขข้อบกพร่องของ JS มักจะทำให้สิ่งต่างๆช้าลง นี่คือสิ่งที่เกิดขึ้นเมื่อคุณมีคน Linux พัฒนาสำหรับ Windows - ความยุ่งเหยิงที่ซับซ้อนขนาดใหญ่
— MC9000

ฉันรายงานปัญหานี้ที่github.com/aspnet/JavaScriptServices/issues/1298ฉันสังเกตเห็นปัญหานี้กับ VS 2015 ในปี 2015 ด้วยโปรเจ็กต์ JavaScript แต่ปัญหาจะแย่ลงเรื่อย ๆ
— มหัศจรรย์โลก

หยุดไป 2 gb ในปี 2017
— Geomorillo

ไม่ได้รับการแก้ไขสำหรับฉัน ยังคงกินหน่วยความจำเป็นจำนวนมากด้วยเวอร์ชัน 15.6.6
— John81

0

หากต้องการปิดใช้งานบริการภาษาใน VS Code ให้ไปที่ส่วนขยายจากนั้นกรองส่วนขยายในตัวและปิดใช้งานบริการภาษา TypeScript / Javascript

ในที่สุดฉันก็ค้นพบสิ่งนี้หลังจากบริการโหนดของรหัส VS ขัดข้องเซิร์ฟเวอร์ของฉันประมาณล้านครั้ง น่ารำคาญที่นี่เป็นเรื่องยากที่จะหาเอกสารเกี่ยวกับ

ปิดใช้งานส่วนขยายบริการภาษา ts / js ในตัว


0

ในกรณีของฉันฉันทำบอทต้องการฆ่ากระบวนการ node.js และฉันทำตามสิ่งต่าง ๆ เพื่อลดการใช้ CPU กระบวนการ O Node.Js ที่ทำงานภายใต้ Visual Studio 2019:

  • ฉันลบโฟลเดอร์ "Program Files (x86) / MicrosoftSDK / TypeScript
  • ฉันวิ่ง npm rebuild fsevents
  • ฉันปิดเบราว์เซอร์ Chrome: การตั้งค่า - ระบบ - ดำเนินการต่อแอปพื้นหลัง ...

ดูเหมือนว่าฉันจะดีขึ้นมากในตอนนี้ แต่ไม่ใช่เรื่องโชคร้าย 100%

หวังว่านี่จะช่วยใครบางคนด้วย ขอให้โชคดี! :-)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.