รีไซเคิล
การรีไซเคิลมักจะ * โดยที่ IIS เริ่มต้นกระบวนการใหม่เป็นคอนเทนเนอร์สำหรับแอปพลิเคชันของคุณจากนั้นให้กระบวนการเก่าแก่ ShutdownTimeLimit เพื่อหลีกเลี่ยงความตั้งใจของตัวเองก่อนที่มันจะถูกฆ่า
* - โดยปกติ: ดูการตั้งค่า DisallowOverlappingRotation / "ปิดการใช้งานรีไซเคิลที่ทับซ้อนกัน"
มันเป็นการทำลายซึ่งกระบวนการดั้งเดิมและข้อมูลสถานะทั้งหมดจะถูกยกเลิก การใช้สถานะเซสชันที่ไม่อยู่ในกระบวนการ (เช่นสถานะเซิร์ฟเวอร์หรือฐานข้อมูลหรือแม้แต่คุกกี้หากสถานะของคุณมีขนาดเล็ก) สามารถช่วยให้คุณสามารถแก้ไขปัญหานี้ได้
แต่เป็นค่าเริ่มต้นที่ทับซ้อนกัน - หมายถึงระยะเวลาของการหยุดทำงานลดลงเนื่องจากกระบวนการใหม่เริ่มต้นและถูกเชื่อมโยงกับคิวคำขอก่อนที่กระบวนการเก่าจะแจ้งว่า "คุณมี [ShutdownTimeLimit] วินาทีที่จะหายไปโปรดปฏิบัติตาม"
การตั้งค่า
สำหรับคำถามของคุณ: การตั้งค่าทั้งหมดในหน้านั้นควบคุมการรีไซเคิลในบางวิธี "การปิดเครื่อง" อาจถูกอธิบายว่าเป็น "การรีไซเคิลเชิงรุก" - ซึ่งกระบวนการเองตัดสินใจว่าถึงเวลาที่ต้องไปแล้วและออกไปอย่างเป็นระเบียบ
ปฏิกิริยารีแอคทีฟคือที่ที่ WAS ตรวจพบปัญหาและถ่ายทำกระบวนการ (หลังจากสร้าง W3WP ทดแทนที่เหมาะสม)
ต่อไปนี้คือสิ่งที่สามารถทำให้เกิดการรีไซเคิลรูปแบบเดียวหรืออีกรูปแบบหนึ่ง:
- ISAPI ตัดสินใจว่ามันไม่ดีต่อสุขภาพ
- โมดูลใด ๆ ที่ล้มเหลว
- หมดเวลาที่ไม่ได้ใช้งาน
- ซีพียูที่ จำกัด
- การปรับคุณสมบัติแอพพูล
- เนื่องจากแม่ของคุณอาจกรีดร้องในช่วงเวลาหนึ่ง: "หยุดการหยิบมันมิฉะนั้นมันจะไม่ดีขึ้นเลย!"
- ความล้มเหลวของ "ping" * ไม่ใช่การ ping ต่อ se เพราะใช้ไพพ์ที่มีชื่อ - "การตรวจจับชีวิต" เพิ่มเติม
- การตั้งค่าทั้งหมดในภาพหน้าจอด้านบน
จะทำอย่างไร:
โดยทั่วไป:
ปิดการใช้งานหมดเวลาไม่ได้ใช้งาน ไม่มีการใช้งาน 20 นาที = บูม! กระบวนการใหม่ในคำขอถัดไปที่เข้ามา ตั้งค่าเป็นศูนย์
ปิดใช้งานช่วงเวลาปกติ - ค่าเริ่มต้น 29 ชั่วโมงถูกอธิบายว่า "บ้า", "น่ารำคาญ" และ "ฉลาด" โดยฝ่ายต่างๆ ที่จริงแล้วมีเพียงสองเท่านั้นที่เป็นจริง
ทางเลือกเปิดDisallowRotationOnConfigChange (ด้านบนปิดการใช้งาน Reycling สำหรับการเปลี่ยนแปลงการกำหนดค่า ) หากคุณไม่สามารถหยุดเล่นกับมันได้ - สิ่งนี้จะช่วยให้คุณเปลี่ยนการตั้งค่ากลุ่มแอพโดยไม่ต้องส่งสัญญาณทันทีถึงกระบวนการของผู้ปฏิบัติงาน คุณต้องรีไซเคิล App Pool ด้วยตนเองเพื่อรับการตั้งค่าที่จะมีผลซึ่งช่วยให้คุณตั้งค่าล่วงหน้าจากนั้นใช้หน้าต่างการเปลี่ยนแปลงเพื่อนำไปใช้ผ่านกระบวนการรีไซเคิลของคุณ
ตามหลักการทั่วไปให้เปิดการกระตุกอยู่ นั่นคือความปลอดภัยของคุณ ฉันเคยเห็นผู้คนปิดใช้งานแล้วบางครั้งเว็บไซต์ก็หยุดทำงานไปเรื่อย ๆ จนนำไปสู่ความตื่นตระหนก ... ดังนั้นหากการตั้งค่านั้นรุนแรงเกินไปสำหรับแอปที่เห็นได้ชัดมากช้ามากตอบสนองของคุณ และดูสิ่งที่คุณได้รับแทนที่จะปิด (ยกเว้นว่าคุณได้ตั้งค่าการทุ่มตลาดอัตโนมัติในโหมด crash crash ไว้สำหรับแขวน W3WP ผ่านกระบวนการตรวจสอบของคุณเอง)
นั่นเพียงพอที่จะทำให้กระบวนการที่ประพฤติตนอยู่ได้ตลอดไป ถ้ามันตายแน่นอนมันจะถูกแทนที่ หากแฮงค์การกระตุกควรรับและเริ่มใหม่ภายใน 2 นาที (โดยค่าเริ่มต้นการคำนวณที่แย่ที่สุดควรเป็น: สูงสุดถึงความถี่ping + ping timeout + การจำกัด เวลาเริ่มต้นก่อนที่คำขอจะเริ่มทำงานอีกครั้ง)
การ จำกัด ซีพียูนั้นไม่น่าสนใจตามปกติเพราะโดยปกติแล้วมันจะปิดและมันก็กำหนดค่าให้ไม่ทำอะไรเลย หากมีการกำหนดค่าให้ฆ่ากระบวนการตรวจสอบว่าเป็นทริกเกอร์การรีไซเคิล ทิ้งไว้ หมายเหตุสำหรับ IIS 8.x การควบคุมปริมาณ CPU กลายเป็นตัวเลือกด้วย
AppPool (IIS) ไม่ใช่ AppDomain (.Net) (แต่อาจมีหนึ่ง / บางส่วน)
แต่ ... จากนั้นเราจะเข้าสู่. net land และการรีไซเคิล AppDomain ซึ่งอาจทำให้สูญเสียสถานะ (ดู: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
เวอร์ชั่นสั้นคุณทำโดยการแตะไฟล์ web.config ในโฟลเดอร์เนื้อหาของคุณ (อีกครั้งด้วยการหยิบ!) หรือโดยการสร้างโฟลเดอร์ในโฟลเดอร์นั้นหรือไฟล์ ASPX หรือ .. สิ่งอื่น ๆ ... และที่เกี่ยวกับเป็นการทำลายเช่นเดียวกับการรีไซเคิล App Pool ลบด้วยค่าเริ่มต้นของรหัสเนทีฟ (ซึ่งเป็นแนวคิดของรหัสที่ได้รับการจัดการ (.Net) เพียงอย่างเดียวดังนั้นจะมีเพียงโค้ดที่ได้รับการจัดการเท่านั้นที่เกิดขึ้นที่นี่)
แอนติไวรัสยังสามารถทริกเกอร์สิ่งนี้ขณะที่สแกนไฟล์ web.config ทำให้เกิดการแจ้งเตือนการเปลี่ยนแปลงทำให้ ....