ใน AWS งานจะถูกวางไว้บนอินสแตนซ์ EC2 และแอป ASP.NET WebAPI 2 จะเริ่มต้นในคอนเทนเนอร์นักเทียบท่า
ไซต์รูทว่างเปล่า และไดเร็กทอรีย่อย "/myapp" มีเว็บแอปที่ทำงานอยู่
กลุ่มแอปพลิเคชันได้รับการกำหนดค่าให้เริ่มอัตโนมัติและเปิดตลอดเวลา การตั้งค่า preloadEnabled เปิดใช้งานอยู่เพื่อให้แน่ใจว่าการรีไซเคิลที่ทับซ้อนกันเกิดขึ้นอย่างถูกต้อง และ Application_Start เสร็จสิ้นก่อนให้บริการคำขอ ฉันยังกำหนดหน้าวอร์มอัปซึ่งตั้งค่าสถานะและยืนยันว่ามีการเรียกก่อนที่จะส่งคำขอกระบวนการใหม่
ปัญหาที่ฉันมีคือเมื่อวางงานเป็นครั้งแรก ก่อนที่ Application_Start จะถูกเรียกด้วยซ้ำ ฉันเห็นบันทึกของระบบ Windows ที่ระบุว่า IIS คิดว่ามีการเปลี่ยนแปลงการกำหนดค่าเกิดขึ้นซึ่งต้องมีการรีสตาร์ทกลุ่มแอพ ผลลัพธ์คือกระบวนการ w3wp.exe ครั้งที่ 2 เริ่มดำเนินการตรรกะ Application_Start เพียงไม่กี่วินาทีหลังจากกระบวนการแรกเริ่มต้น ก่อนที่มันจะมีโอกาสดำเนินการ Application_Start ให้เสร็จสิ้นเสียด้วยซ้ำ ในที่สุด กระบวนการทั้งสองล้มเหลว และถูกแทนที่ด้วยกระบวนการที่สามที่ดำเนินการสำเร็จและเริ่มให้บริการคำขอ
ดังนั้นคำถามแรกของฉันคือ เหตุใดคอนเทนเนอร์นักเทียบท่าใหม่ที่กำลังจะเริ่ม IIS ทันทีจึงคิดว่ามีการเปลี่ยนแปลงการตั้งค่าบางอย่างซึ่งต้องใช้ อักษรย่อ กระบวนการรีไซเคิล? เมื่อถึงเวลาที่เขียนบันทึกของระบบนี้ ไม่มีการเรียกใช้รหัสผู้ใช้ด้วยซ้ำ การประทับเวลาจะปรากฏขึ้นไม่กี่วินาทีก่อนที่ Application_Start จะบันทึกกิจกรรมใดๆ คำถามที่สองของฉันคือ ฉันจะทราบได้อย่างไรว่าอะไรเป็นตัวกระตุ้นการเปลี่ยนแปลงการตั้งค่าที่ชัดเจนนี้ หรือการเปลี่ยนแปลงการตั้งค่านั้นคืออะไร? บันทึกไม่ได้กล่าวถึงการตั้งค่าหรือไฟล์ที่เปลี่ยนแปลงหรือเพราะเหตุใด ดูเหมือนว่าจะแก้ไขจุดบกพร่องภายในคอนเทนเนอร์นักเทียบท่าได้ยากเป็นพิเศษ
สำหรับความรู้ของฉันมี ไม่มีไฟล์สแกนไวรัสสัมผัส ในคอนเทนเนอร์นักเทียบท่า (ตามที่แนะนำในตอนแรก ที่นี่) และเท่าที่ฉันทราบ ระบบไฟล์ของอิมเมจนักเทียบท่าถูกล็อกไว้แล้วเมื่อเริ่มต้น มันไม่เหมือนกับบรรทัดในไฟล์นักเทียบท่าที่แก้ไขการตั้งค่าจะทำงานใหม่เมื่อเมาต์อิมเมจ
บันทึกของระบบ:
25/01/2022 22:36:59 WAS คำเตือน กระบวนการที่ให้บริการกลุ่มแอปพลิเคชัน 'DefaultAppPool' สิ้นสุดลงโดยไม่คาดคิด รหัสกระบวนการคือ '11592' รหัสออกจากกระบวนการคือ '0xc0000005'
25/01/2022 22:36:59 WAS คำเตือน กระบวนการที่ให้บริการพูลแอปพลิเคชัน 'DefaultAppPool' ได้รับข้อผิดพลาดในการสื่อสารร้ายแรงกับ Windows Process Activation Service รหัสกระบวนการคือ '1328' เขตข้อมูลประกอบด้วยหมายเลขข้อผิดพลาด 109 0 7 128
25/01/2022 22:34:35 ข้อมูล WAS กระบวนการของผู้ปฏิบัติงานที่ให้บริการกลุ่มแอปพลิเคชัน 'DefaultAppPool' กำลังถูกรีไซเคิลเนื่องจากการเปลี่ยนแปลงการกำหนดค่า 1 รายการขึ้นไปในคุณสมบัติของกลุ่มแอปพลิเคชัน ซึ่งจำเป็นต้องรีสตาร์ทกระบวนการ
โปรดทราบว่าบันทึกแรกที่ 22:34:35 ระบุว่ามีบางอย่างเปลี่ยนแปลงเกิดขึ้นก่อนที่กระบวนการแรกจะไปถึง Application_Start เนื่องจากเอาต์พุตบันทึกแรกโดย Application_Start จะถูกประทับเวลาหลังจากนั้น การสลับการตั้งค่าพูลแอปต่างๆ เช่น การหมดเวลาเริ่มต้น และอื่นๆ เปลี่ยนแปลงสาเหตุที่ทำให้กระบวนการทั้งสองทำงานผิดพลาด (เช่น บางครั้งเป็น OutOfMemoryException แทนที่จะเป็นการละเมิดการเข้าถึง) แต่สิ่งนี้ไม่ได้อธิบายว่าทำไมจึงคิดว่าการรีไซเคิลพูลเป็นสิ่งที่จำเป็นก่อนครั้งแรก หนึ่งเริ่มด้วยซ้ำ จากนั้นจึงเริ่มสองกระบวนการ หนึ่งเกือบจะตามมาอีกฉันไม่ค่อยกังวลเกี่ยวกับสาเหตุที่ทั้งสองล้มเหลวในที่สุด และจากนั้นจะถูกแทนที่ด้วยกระบวนการที่สามที่เหมือนกันซึ่งเสร็จสิ้นโดยไม่มีปัญหาใดๆ เลย