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.