เหตุใดกระบวนการของผู้ปฏิบัติงาน IIS จึงรีไซเคิลทุก ๆ 29 ชั่วโมงและไม่ใช่ทุก 24 ชั่วโมง


24

เมื่อคุณตั้งค่าไซต์บน IIS ค่าเริ่มต้นของกระบวนการผู้ปฏิบัติงานจะรีไซเคิลทุก ๆ 1740 นาที (29 ชั่วโมง) ทำไมจำนวนคี่เช่น 29 ชั่วโมงและไม่เช่น 24 หรือ 48 ชั่วโมง

คำตอบ:


27

ที่ Tech Ed 2003 ผู้นำเสนอถูกถามคำถามนี้และคำตอบคือพวกเขาต้องการวงจรที่ไม่สม่ำเสมอเพื่อป้องกันไม่ให้เกิดขึ้นในขอบเขตรายวัน (เช่นแยกความแตกต่างจากงานประจำวันอื่น ๆ ที่กำหนดไว้ในเซิร์ฟเวอร์ / โดเมน)

ไซต์ที่นี่ (ลิงก์ตาย)สันนิษฐานว่า:

... (29 คือ) ไพรม์แรกหลัง 24 ทำให้มันมีโอกาสเกิดขึ้นน้อยที่สุดในรูปแบบปกติกับกระบวนการเซิร์ฟเวอร์อื่น ๆ ทำให้การสืบสวนเป็นปัญหาง่ายขึ้น

ไซต์อื่นปรากฏขึ้นเพื่อยืนยันสิ่งนี้:

( เวดฮิลโม่ ) แนะนำ 29 ชั่วโมงด้วยเหตุผลง่ายๆว่าเป็นหมายเลขที่เล็กที่สุดใน 24 เขาต้องการรูปแบบที่เซและไม่ซ้ำที่ไม่เกิดขึ้นบ่อยกว่าหนึ่งครั้งต่อวัน


น่าสนใจ โดยส่วนตัวแล้วฉันคิดว่าการมีสิ่งที่เกิดขึ้นอีกในเวลาเดียวกันในแต่ละวันจะช่วยให้ติดตามได้ง่ายขึ้นหากกระบวนการของผู้ปฏิบัติงานรีไซเคิลเป็นสาเหตุของปัญหาอื่น ๆ เช่นการติดตามปัญหาที่เกิดขึ้นโดยประมาณทุกวันเป็นเรื่องยาก แต่จะง่ายกว่าหากเกิดขึ้นตอน 7.00 น. ทุกวันเพราะคุณสามารถค้นหาระบบสำหรับเหตุการณ์ที่เกิดขึ้นในเวลานั้น ฉันรู้ว่าคุณสามารถตั้งค่า IIS ให้รีไซเคิลเมื่อใดก็ตามที่คุณต้องการหรือไม่เลย แต่ส่วนใหญ่จะปล่อยไว้ที่ค่าเริ่มต้น ขอบคุณสำหรับคำตอบ!
Guy

18

ตกลงนี่เป็นการบักฉันดังนั้นฉันจึงขุดไปรอบ ๆ และในที่สุดก็พบการโพสต์นี้จากคนที่เห็นได้ชัดว่าอยู่ในทีม IIS:

สาเหตุที่ IIS6 วนรอบทุก ๆ 29 ชั่วโมงโดยค่าเริ่มต้น (และเรามีเหตุผล

เหตุผลที่ IIS6 วนรอบทุก ๆ 29 ชั่วโมงโดยค่าเริ่มต้น (และเรามีเหตุผลในการเลือก 29 ชั่วโมงเป็นค่าเริ่มต้น) เนื่องจากมีโอกาสมากกว่าที่ไม่เว็บแอปพลิเคชันที่ทำงานอยู่นั้นไม่น่าเชื่อถือและต้องเริ่มต้นใหม่บ่อยครั้ง

ดังนั้น IIS6 จึงถูกสร้างขึ้นรอบ ๆ สถานที่ตั้ง (ดูถูกเหยียดหยาม) ที่เว็บแอปพลิเคชันของผู้ใช้จะไม่ทำงานนานกว่า 24 ชั่วโมงติดต่อกันมีการวางแผนคุณสมบัติตามความเหมาะสมและเลือกค่าเริ่มต้น กระบวนการของผู้ปฏิบัติงานจะนำกลับมาใช้ใหม่ทุก ๆ 29 ชั่วโมงกระบวนการเริ่มต้นและการตรวจสอบการปิดกระบวนการจะถูก ping อย่างต่อเนื่องเพื่อให้แน่ใจว่ามันกำลังทำงานอยู่กระบวนการจัดการกระบวนการจะถูกติดตามและส่งสัญญาณเมื่อมันยุติลงอย่างไม่คาดคิด ฯลฯ

ตระหนักว่าการรีไซเคิลเป็นส่วนหนึ่งของการดำเนินการตามปกติ IIS6 ยังทำให้แน่ใจว่าได้แยกการรีไซเคิลดังกล่าวจากผู้ใช้ปลายทาง - การเชื่อมต่อ TCP ของผู้ใช้ปลายทางไม่เคยสิ้นสุดในระหว่างการรีไซเคิลเนื่องจากเวทมนต์โหมดเคอร์เนล เมื่อรวมกับแอพพลิเคชั่นโหมดผู้ใช้ที่เก็บเซสชั่นนอกกระบวนการ (เช่น ASP.Net Session State Service) หนึ่งจะรับประกันความพร้อมใช้งานที่เชื่อถือได้จริงโดยไม่สูญเสียข้อมูลที่ผู้ใช้มองเห็นแม้ว่าเว็บแอปพลิเคชันล้มเหลว คำขอของผู้ใช้

นี่เป็นเรื่องที่ดีเท่าที่ IIS6 สามารถทำได้ - เนื่องจากมีเว็บแอปพลิเคชั่นที่ไม่น่าเชื่อถือทำให้ดูน่าเชื่อถือสำหรับผู้ใช้ปลายทางและทำได้โดยไม่ต้องมีการแก้ไขใด ๆ ของเว็บแอปพลิเคชั่นที่ไม่น่าเชื่อถือ

แน่นอนว่าแอปพลิเคชั่นที่ไม่น่าเชื่อถือทั้งหมดนั้นสามารถสร้างความน่าเชื่อถือได้ - ถ้าเป็นเช่นนั้นเราก็หมดงาน! - แต่ IIS6 ลองอีกครั้งเพื่อให้มีความยืดหยุ่น

ในกรณีของคุณมันเกิดขึ้นว่า resiliancy มีผลข้างเคียงกับสถานะผู้ใช้ที่ไม่ยืนยัน แต่สามารถปรับได้ง่าย

สมมติว่าแอปพลิเคชันเว็บของคุณไม่มีปัญหาและอยู่ในสถานะเซสชันที่อยู่ระหว่างดำเนินการคุณจะต้องเปลี่ยนค่าเริ่มต้นเหล่านี้: 1. ปิดการรีไซเคิลเป็นระยะเวลา 29 ชั่วโมง 2. ปิดการหมดเวลาใช้งาน 20 นาที

สิ่งนี้จะป้องกันการสูญเสียสถานะเซสชันโดยไม่คาดคิด

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


1
ฉันรู้สึกโง่ที่ถามสิ่งนี้ แต่ถ้า IIS ถือว่าเว็บแอปไม่ทำให้เป็น 24 ชั่วโมงทำไมถึงเป็นตัวเลือกที่ดี 29 พวกเขาไม่ควรเลือกหมายเลขด้านล่าง 24 ฉันผิดในการตีความคำอธิบายนี้ที่ไหน
อัลฟ่า

อาจไม่มีคำตอบที่ "ดีที่สุด" สำหรับค่าเริ่มต้นและผู้ที่ดูแลเว็บไซต์ควรทำการตัดสินใจอย่างรอบคอบโดยพิจารณาจากแอพและระบบ
DOK

@Alpha - ฉันเห็นด้วย - ไม่เข้าท่า - ควรเริ่มต้นที่ 22 หรือ 23 ชั่วโมงหรืออย่างน้อยก็ต่ำกว่า 24
Guy

[จำเป็น]
piers7

ฉันได้รับข้อผิดพลาดในการรวบรวมแปลก ๆ ในส่วนต่าง ๆ ของเว็บไซต์ทุกเช้าที่สามารถแก้ไขได้ด้วยการรีไซเคิล ฉันเดาว่า Idle Timeout ทริกเกอร์ค้างคืนเนื่องจากมีภาระน้อยและด้วยเหตุผลบางอย่างเมื่อมันเริ่มขึ้นอีกครั้งข้อผิดพลาดในการคอมไพล์ก็กลับมา ขอบคุณสำหรับนำไปฉันจะไปตามเส้นทางนี้เพื่อแก้ไขปัญหาของฉัน ...
sonjz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.