เมื่อคุณตั้งค่าไซต์บน IIS ค่าเริ่มต้นของกระบวนการผู้ปฏิบัติงานจะรีไซเคิลทุก ๆ 1740 นาที (29 ชั่วโมง) ทำไมจำนวนคี่เช่น 29 ชั่วโมงและไม่เช่น 24 หรือ 48 ชั่วโมง
เมื่อคุณตั้งค่าไซต์บน IIS ค่าเริ่มต้นของกระบวนการผู้ปฏิบัติงานจะรีไซเคิลทุก ๆ 1740 นาที (29 ชั่วโมง) ทำไมจำนวนคี่เช่น 29 ชั่วโมงและไม่เช่น 24 หรือ 48 ชั่วโมง
คำตอบ:
ที่ Tech Ed 2003 ผู้นำเสนอถูกถามคำถามนี้และคำตอบคือพวกเขาต้องการวงจรที่ไม่สม่ำเสมอเพื่อป้องกันไม่ให้เกิดขึ้นในขอบเขตรายวัน (เช่นแยกความแตกต่างจากงานประจำวันอื่น ๆ ที่กำหนดไว้ในเซิร์ฟเวอร์ / โดเมน)
ไซต์ที่นี่ (ลิงก์ตาย)สันนิษฐานว่า:
... (29 คือ) ไพรม์แรกหลัง 24 ทำให้มันมีโอกาสเกิดขึ้นน้อยที่สุดในรูปแบบปกติกับกระบวนการเซิร์ฟเวอร์อื่น ๆ ทำให้การสืบสวนเป็นปัญหาง่ายขึ้น
ไซต์อื่นปรากฏขึ้นเพื่อยืนยันสิ่งนี้:
( เวดฮิลโม่ ) แนะนำ 29 ชั่วโมงด้วยเหตุผลง่ายๆว่าเป็นหมายเลขที่เล็กที่สุดใน 24 เขาต้องการรูปแบบที่เซและไม่ซ้ำที่ไม่เกิดขึ้นบ่อยกว่าหนึ่งครั้งต่อวัน
ตกลงนี่เป็นการบักฉันดังนั้นฉันจึงขุดไปรอบ ๆ และในที่สุดก็พบการโพสต์นี้จากคนที่เห็นได้ชัดว่าอยู่ในทีม IIS:
สาเหตุที่ IIS6 วนรอบทุก ๆ 29 ชั่วโมงโดยค่าเริ่มต้น (และเรามีเหตุผล
เหตุผลที่ IIS6 วนรอบทุก ๆ 29 ชั่วโมงโดยค่าเริ่มต้น (และเรามีเหตุผลในการเลือก 29 ชั่วโมงเป็นค่าเริ่มต้น) เนื่องจากมีโอกาสมากกว่าที่ไม่เว็บแอปพลิเคชันที่ทำงานอยู่นั้นไม่น่าเชื่อถือและต้องเริ่มต้นใหม่บ่อยครั้ง
ดังนั้น IIS6 จึงถูกสร้างขึ้นรอบ ๆ สถานที่ตั้ง (ดูถูกเหยียดหยาม) ที่เว็บแอปพลิเคชันของผู้ใช้จะไม่ทำงานนานกว่า 24 ชั่วโมงติดต่อกันมีการวางแผนคุณสมบัติตามความเหมาะสมและเลือกค่าเริ่มต้น กระบวนการของผู้ปฏิบัติงานจะนำกลับมาใช้ใหม่ทุก ๆ 29 ชั่วโมงกระบวนการเริ่มต้นและการตรวจสอบการปิดกระบวนการจะถูก ping อย่างต่อเนื่องเพื่อให้แน่ใจว่ามันกำลังทำงานอยู่กระบวนการจัดการกระบวนการจะถูกติดตามและส่งสัญญาณเมื่อมันยุติลงอย่างไม่คาดคิด ฯลฯ
ตระหนักว่าการรีไซเคิลเป็นส่วนหนึ่งของการดำเนินการตามปกติ IIS6 ยังทำให้แน่ใจว่าได้แยกการรีไซเคิลดังกล่าวจากผู้ใช้ปลายทาง - การเชื่อมต่อ TCP ของผู้ใช้ปลายทางไม่เคยสิ้นสุดในระหว่างการรีไซเคิลเนื่องจากเวทมนต์โหมดเคอร์เนล เมื่อรวมกับแอพพลิเคชั่นโหมดผู้ใช้ที่เก็บเซสชั่นนอกกระบวนการ (เช่น ASP.Net Session State Service) หนึ่งจะรับประกันความพร้อมใช้งานที่เชื่อถือได้จริงโดยไม่สูญเสียข้อมูลที่ผู้ใช้มองเห็นแม้ว่าเว็บแอปพลิเคชันล้มเหลว คำขอของผู้ใช้
นี่เป็นเรื่องที่ดีเท่าที่ IIS6 สามารถทำได้ - เนื่องจากมีเว็บแอปพลิเคชั่นที่ไม่น่าเชื่อถือทำให้ดูน่าเชื่อถือสำหรับผู้ใช้ปลายทางและทำได้โดยไม่ต้องมีการแก้ไขใด ๆ ของเว็บแอปพลิเคชั่นที่ไม่น่าเชื่อถือ
แน่นอนว่าแอปพลิเคชั่นที่ไม่น่าเชื่อถือทั้งหมดนั้นสามารถสร้างความน่าเชื่อถือได้ - ถ้าเป็นเช่นนั้นเราก็หมดงาน! - แต่ IIS6 ลองอีกครั้งเพื่อให้มีความยืดหยุ่น
ในกรณีของคุณมันเกิดขึ้นว่า resiliancy มีผลข้างเคียงกับสถานะผู้ใช้ที่ไม่ยืนยัน แต่สามารถปรับได้ง่าย
สมมติว่าแอปพลิเคชันเว็บของคุณไม่มีปัญหาและอยู่ในสถานะเซสชันที่อยู่ระหว่างดำเนินการคุณจะต้องเปลี่ยนค่าเริ่มต้นเหล่านี้: 1. ปิดการรีไซเคิลเป็นระยะเวลา 29 ชั่วโมง 2. ปิดการหมดเวลาใช้งาน 20 นาที
สิ่งนี้จะป้องกันการสูญเสียสถานะเซสชันโดยไม่คาดคิด
แน่นอนถ้าคุณเคยใช้แอปพลิเคชันที่มีสถานะเซสชันที่ไม่อยู่ในกระบวนการคุณสามารถปล่อยให้ทุกอย่างเป็นค่าเริ่มต้นและไม่เคยสังเกตเห็นความแตกต่างในการทำงานหรือความน่าเชื่อถือ