คำสั่ง PowerShell เพื่อตรวจสอบและตรวจสอบแนวทางปฏิบัติที่ดีที่สุดในการดำเนินงาน IIS/application pools/ASP.NET
ในความพยายามในการปรับปรุงใดๆ ขั้นตอนแรกที่แนะนำคือการสำรวจและตอบคำถามว่าเรายืนอยู่จุดใด (เพื่อสำรวจและวิเคราะห์สถานะปัจจุบันของเรา) นอกเหนือจากที่ที่เราอยากจะเป็น แม้ว่าแนวทางปฏิบัติที่ดีที่สุดแต่ละข้อสามารถได้รับการยืนยันและนำไปใช้ด้วยตนเองได้ โครงการนี้เริ่มต้นตั้งแต่ขอบเขตแรกเพื่อช่วยในระหว่างการค้นพบ ในเอาต์พุตแรก เราจะมีไฟล์ CSV สองไฟล์ ซึ่งเราจะมีรายการการดำเนินการที่แนะนำเพื่อให้ครอบคลุมและข้อมูลทั่วไปเกี่ยวกับระบบปัจจุบัน
คำสั่งเหล่านี้ดำเนินการระบบแบบอ่านอย่างเดียว ไม่มีการดำเนินการแก้ไขที่เกี่ยวข้อง ข้อยกเว้นเพียงอย่างเดียวคือไฟล์ csv สองไฟล์ที่สร้างขึ้นเพื่อให้เก็บผลลัพธ์สุดท้ายเท่านั้น
เวลาในการรีไซเคิลเริ่มต้นคือ 1,740 นาที จากนั้น การรีไซเคิลพูลแอปจะเกิดขึ้นในช่วงเวลาทำการในช่วงเวลาหนึ่ง ซึ่งอาจทำให้ประสิทธิภาพลดลงและเซสชันผู้ใช้เสร็จสิ้น (ปัญหาเซสชันผู้ใช้เสร็จสิ้นอาจบรรเทาลงได้ว่า ASP.NET จะคงสถานะเซสชันไว้หรือไม่ out-proc เช่น ใน SqlServer) ค่าที่แนะนำสำหรับการรีไซเคิลเวลาปกติคือ 0 (ตั้งค่าเป็นศูนย์ ซึ่งหมายความว่าการรีไซเคิลจะไม่เกิดขึ้นเนื่องจากเวลาที่ผ่านไป) นอกเหนือจากการระบุเวลาเฉพาะ เช่น ที่ 03:00 น
การหมดเวลาใช้งานของการรีไซเคิลตามค่าเริ่มต้นคือ 20 นาที ซึ่งหมายความว่า IIS จะปิดกระบวนการของผู้ปฏิบัติงานโดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นเวลา 20 นาที จากนั้นเมื่อมีคำขอใหม่มาถึงแอปพลิเคชัน กระบวนการเปิดใช้งานแบบเต็มจะเริ่มต้นอีกครั้ง (การสร้างผู้ปฏิบัติงานใหม่ กระบวนการ หน้า ASP.NET และการคอมไพล์ Dlls ฯลฯ) ซึ่งอาจทำให้ประสิทธิภาพลดลงและเซสชันผู้ใช้เสร็จสิ้น หากการใช้หน่วยความจำของเซิร์ฟเวอร์อนุญาตให้เรา จากนั้น ค่าที่แนะนำสำหรับการหมดเวลาไม่ได้ใช้งานคือ 0 (ตั้งค่าเป็น หรืออีกนัยหนึ่งคือ IIS จะไม่ปิดกระบวนการของผู้ปฏิบัติงานที่กำลังดำเนินการอยู่แล้วเนื่องจากไม่มีการใช้งาน กระบวนการดังกล่าวจะถูกรีไซเคิลเมื่อตรงตามเงื่อนไขการรีไซเคิลอื่นๆ เท่านั้น)
ข้อมูลระบุตัวตนเริ่มต้นที่ใช้โดยกระบวนการของผู้ปฏิบัติงานคือ ApplicationPoolIdentity และมีสิทธิ์ที่จำเป็นในการเรียกใช้แอปพลิเคชันเว็บเกือบทุกตัว ในกรณีที่จำเป็นต้องเปลี่ยนบัญชีนี้ เราจำเป็นต้องตรวจสอบให้แน่ใจว่าบัญชีที่เลือกไม่มีสิทธิ์เพิ่มเติมตามที่จำเป็นขั้นต่ำ ไม่เคยแนะนำให้ใช้บัญชี Localservice หรือบัญชีผู้ดูแลระบบไม่ว่าในกรณีใด ๆ
เนื่องจากแต่ละกลุ่มแอปพลิเคชันเริ่มกระบวนการของผู้ปฏิบัติงานที่แตกต่างกัน นี่คือเลเยอร์การแยกขั้นสุดท้ายใน IIS ดังนั้น หากแอปพลิเคชันกำลังมีปัญหาด้านประสิทธิภาพ ข้อยกเว้นที่ไม่สามารถจัดการ การโต้แย้งของเธรด และ/หรือการจัดการทรัพยากรด้วยเหตุผลบางประการ แอปพลิเคชันอื่นๆ ไม่ควร ได้รับผลกระทบจากพฤติกรรมที่ไม่ดีนี้ และนั่นก็เป็นจริง แต่เมื่อแต่ละแอปพลิเคชันถูกแยกออกจากกลุ่มแอปพลิเคชันของตัวเองเท่านั้น
อย่าปล่อยสวิตช์
บนไฟล์ web.config ของแอปพลิเคชันโดยไม่ได้ตั้งใจ (หรือจงใจ) การทำเช่นนี้จะทำให้เหตุการณ์ที่ไม่เหมาะสมหลายประการเกิดขึ้น รวมถึง:
PS > build.ps1
ซึ่งจะสร้างโฟลเดอร์ output
output
ไปยังเซิร์ฟเวอร์เป้าหมายเพื่อวิเคราะห์PS > Run.ps1
HostName-Findings.csv
ประกอบด้วยรายการการดำเนินการทั้งหมดที่เกี่ยวข้องกับแนวทางปฏิบัติที่ดีที่สุดในการดำเนินงาน IIS/ASP.NETHostName-BaseLineInfo.csv
ประกอบด้วยข้อมูลทั่วไปเกี่ยวกับสถานะปัจจุบันของระบบคุณต้องเรียกใช้คำสั่งเหล่านี้ในฐานะผู้ดูแลระบบ
ยินดีต้อนรับการปรับปรุงการออกแบบใด ๆ ความคิดใหม่ ๆ ก็ยินดีต้อนรับ :)
โค้ดเกือบทั้งหมดใน Powerops ได้รับการออกแบบและเขียนผ่าน TDD ดังนั้น ฉันขอแนะนำให้คุณใช้นิสัยที่ดีนี้ต่อไป
เพื่อรันการทดสอบหน่วย ให้เปิด PowerShell ในฐานะผู้ดูแลระบบ และรัน PS projectPath/test/> Invoke-Pester