ผลกระทบของลูปเครือข่ายต่อกระบวนการ MongoDB ของเราและวิธีที่เราตอบสนอง
ในระหว่างลูปเครือข่าย เนื่องจากกระบวนการ MongoDB ของเราไม่สามารถเชื่อมต่อได้ตามปกติ แต่ละกระบวนการจึงทำเครื่องหมายกระบวนการที่เกี่ยวข้องทั้งหมดเป็นออฟไลน์ นั่นคือ แต่ละกระบวนการ mongoS ทำเครื่องหมายกระบวนการ mongoD ที่เกี่ยวข้องทั้งหมดเป็นออฟไลน์ และแต่ละกระบวนการ mongoD ทำเครื่องหมายสมาชิกชุดเรพลิกาที่เกี่ยวข้องเป็นออฟไลน์ อย่างไรก็ตาม แม้ว่าการเชื่อมต่อเครือข่ายจะได้รับการกู้คืนไปยังเซิร์ฟเวอร์จริงของเราโดย Rackspace แล้ว กระบวนการ mongoS หรือ mongoD ก็ไม่สามารถสร้างการเชื่อมต่อทั้งหมดไปยังกระบวนการอื่น ๆ ที่ถูกทำเครื่องหมายว่าออฟไลน์ไว้ใหม่ได้
ณ จุดนี้ เพื่อช่วยเหลือทีมผู้ดูแลฐานข้อมูล Rackspace (DBA) ของเรา ทีม Braze DevOps ได้เริ่มแก้ไขจุดบกพร่องอย่างรวดเร็วและทดสอบวิธีการในการกู้คืนการเชื่อมต่อนั้น การตรวจสอบของเราระบุว่าตัวเลือกเดียวที่ใช้ได้คือการรีสตาร์ทกระบวนการ mongoD เกือบ 16,000 รายการและ mongoS เกือบ 16,000 รายการในคอนเทนเนอร์เสมือนจริง เมื่อพิจารณาถึงขนาดที่แท้จริงของการดำเนินการนี้และความจริงที่ว่าระบบอัตโนมัติไม่มีอยู่เพื่อรีสตาร์ทคอนเทนเนอร์จำนวนมากได้อย่างรวดเร็ว วิศวกรของ Rackspace จึงได้เขียนโค้ดใหม่ในระหว่างที่เกิดเหตุการณ์เพื่อสร้างความสามารถอัตโนมัติแบบทันทีทันใด
น่าเสียดายที่เมื่อกระบวนการรีสตาร์ทเพิ่มสูงขึ้น เกิดปัญหาอื่นในระบบชื่อโดเมน (DNS) เมื่อกระบวนการ mongoS และ mongoD ออนไลน์ พวกเขาขอข้อมูลจากตัวแก้ไข DNS ในกระบวนการที่เรียกว่าการค้นหา DNS ด้วยการค้นหา DNS อย่างต่อเนื่องซึ่งขับเคลื่อนโดยความเร็วของการรีสตาร์ท เซิร์ฟเวอร์ DNS จึงมีภาระงานหนัก ส่งผลให้การเชื่อมต่อหมดเวลาบนเลเยอร์ mongoS เมื่อพวกเขาเชื่อมต่อกับกระบวนการ mongoD อีกครั้ง เพื่อรองรับปริมาณงานที่เพิ่มขึ้นนี้ ทีม Rackspace ของเราได้เพิ่มความจุ DNS CPU แต่จากนั้นก็ถูกบังคับให้รีสตาร์ทระดับ mongoS เป็นครั้งที่สองเพื่อสร้างการเชื่อมต่อที่ดีจากแต่ละ mongoS ไปยังกระบวนการ mongoD ที่เกี่ยวข้อง
ประมาณ 17:05 UTC กระบวนการรีสตาร์ททำให้บางคลัสเตอร์เริ่มกลับมาออนไลน์อีกครั้ง เมื่อประสิทธิภาพของฐานข้อมูลฟื้นตัวและคลัสเตอร์มีเสถียรภาพ Braze ยังคงเพิ่มการประมวลผลข้อมูลและความสามารถในการส่งข้อความอย่างต่อเนื่อง อย่างไรก็ตาม ความพยายามดังกล่าวมีความซับซ้อนเนื่องจากมีงานในมือจำนวนมากซึ่งเป็นผลมาจากการไม่พร้อมใช้งานก่อนหน้านี้
เมื่อพิจารณาจากขนาดและความซับซ้อนของสภาพแวดล้อมฐานข้อมูล Rackspace ของเรา ซึ่งประกอบด้วยฐานข้อมูลที่แตกต่างกันหลายร้อยฐานข้อมูล ระยะเวลาของการหยุดทำงาน และปริมาณผลลัพธ์ของ Backlog ของเรา (ซึ่งแสดงถึงข้อความนับพันล้านข้อความและจุดข้อมูลที่นำเข้านับพันล้านจุด) กระบวนการกู้คืนที่จำเป็นใน - การปรับตัวของกระบวนการฟื้นฟูตามปกติของเราในขณะนั้น นี่เป็นสิ่งจำเป็นเพื่อให้แน่ใจว่าทรัพยากรฐานข้อมูลยังคงสมดุลกับความต้องการในการประมวลผลที่กำลังดำเนินอยู่ รวมถึงการแนะนำความสามารถในการประมวลผลโดยรวมจำนวนมหาศาล
อย่างไรก็ตาม ในการทำเช่นนั้น Braze ถึงขีดจำกัด AWS ในด้านจำนวน CPU เสมือนที่เราสามารถจัดเตรียมได้ ซึ่งทำให้เราไม่สามารถเพิ่มความจุของเซิร์ฟเวอร์เพิ่มเติมได้ ทีม Braze ยกระดับสถานการณ์นี้อย่างรวดเร็วด้วยทีม AWS ของเราและได้รับการเพิ่มขึ้น ทำให้วิศวกรของเราสามารถขยายความสามารถในการประมวลผลเซิร์ฟเวอร์ของเราให้อยู่ในระดับสูงสุดเป็นประวัติการณ์ ซึ่งสูงกว่าความจุสูงสุดก่อนหน้าของเราถึง 50% ซึ่งเคยทำได้บน Black วันศุกร์ 2023.
ภายในเวลา 20:30 UTC คลัสเตอร์ US ทั้งหมดของเรา ยกเว้น US 01, US 03 และ US 08 ได้เสร็จสิ้นการประมวลผล Backlog แล้ว และคลัสเตอร์ที่เหลือเหล่านั้นได้รับการประมวลผลในอัตราสูงสุดหรือสูงกว่าจากวันก่อนเกิดเหตุการณ์ ภายในไม่กี่ชั่วโมง คลัสเตอร์ทั้งหมดจะถูกสำรองข้อมูลไปสู่การประมวลผลแบบเรียลไทม์ และเราประกาศว่าเหตุการณ์ได้รับการแก้ไขแล้ว