+− THE DAILY DIFFdev & AI news
REVERT

การปรับใช้กับเซิร์ฟเวอร์ 7 ใน 8 เครื่องทำให้สูญเสีย 460 ล้านดอลลาร์ใน 45 นาที

1 สิงหาคม 2012, 9:30 น.

1 สิงหาคม 2012, 9:30 น. ET: Knight Capital ผู้ดูแลสภาพคล่องตลาดซึ่งอยู่เบื้องหลังการซื้อขายหุ้นทั้งหมดในสหรัฐฯ ประมาณหนึ่งในสิบ ได้ปรับใช้รหัสการกำหนดเส้นทางการสั่งซื้อใหม่กับเซิร์ฟเวอร์ SMARS เจ็ดในแปดเครื่องของตน เซิร์ฟเวอร์เครื่องที่แปดยังคงรัน "Power Peg" ซึ่งเป็นรหัสที่เลิกใช้แล้วในปี 2003 โดยอยู่เบื้องหลังแฟล็กเดียวกันที่ฟีเจอร์ใหม่นำกลับมาใช้ใหม่ เป็นเวลา 45 นาทีที่ส่งคำสั่งซื้อย่อยที่ไม่เคยหยุด: มีการดำเนินการ 4 ล้านรายการ, หุ้น 397 ล้านหุ้น, ประมาณ 7 พันล้านดอลลาร์ของตำแหน่ง, ขาดทุน 460 ล้านดอลลาร์ มีอีเมลเตือน 97 ฉบับมาถึงก่อนเปิดตลาด จากการวิเคราะห์หลังเกิดเหตุ จากคำสั่งของ ก.ล.ต. เอง: การปรับใช้ด้วยตนเองที่ไม่มีใครตรวจสอบ, แฟล็กที่มีสองความหมาย, ตัวนับการหยุดที่ย้ายในปี 2005 และไม่เคยทดสอบใหม่, สวิตช์ปิดที่ไม่มีอยู่จริง, และ "การแก้ไข" ในตลาดจริงที่ทำให้แย่ลง คำตัดสินเกี่ยวกับการแก้ไข: REVERT

อ่านฉบับลายลักษณ์อักษร (ภาษาอังกฤษ) ↗

วิดีโอนี้ครอบคลุมอะไรบ้าง

  • 27-31 ก.ค. 2012: รหัส RLP ถูกคัดลอกด้วยมือไปยังเซิร์ฟเวอร์ SMARS 7 ใน 8 เครื่อง; ไม่มีผู้ตรวจสอบคนที่สอง, ไม่มีขั้นตอนเป็นลายลักษณ์อักษร
  • 1 ส.ค., 8:01 น.: อีเมล "Power Peg disabled" 97 ฉบับก่อนเปิดตลาด; ไม่ได้ออกแบบให้เป็นการแจ้งเตือน, ไม่ได้อ่าน
  • 1 ส.ค., 9:30–10:15 น.: คำสั่งซื้อ 212 รายการกลายเป็นการดำเนินการ 4 ล้านรายการในหุ้น 154 ตัว; ถือยาว 3.5 พันล้านดอลลาร์, ถือชอร์ต 3.15 พันล้านดอลลาร์; ขาดทุน 460 ล้านดอลลาร์; การถอนการติดตั้งรหัสใหม่ทำให้แย่ลง
  • 2 ส.ค. – 19 ธ.ค.: หุ้นลดลง 63% เหลือ 2.58 ดอลลาร์, ได้รับการช่วยเหลือ 400 ล้านดอลลาร์ที่ 1.50 ดอลลาร์/หุ้น, ควบรวมกิจการกับ GETCO; ต.ค. 2013: ค่าปรับ ก.ล.ต. 12 ล้านดอลลาร์, กรณีแรกของกฎ Market Access Rule

บทถอดเสียงที่แปลแล้ว

แปลจากการบรรยายภาษาอังกฤษต้นฉบับ เสียงและคำบรรยายที่มีให้จะควบคุมโดย YouTube

0:00 บริษัทซื้อขายปรับใช้รหัสใหม่กับเซิร์ฟเวอร์เจ็ดในแปดเครื่อง และเครื่องที่แปดซื้อและขายหุ้นเกือบเจ็ดพันล้านดอลลาร์ใน สี่สิบห้านาที ซึ่งเป็นจำนวนมาก แม้แต่วันพุธก็ตาม 1 สิงหาคม 2012 Knight Capital, หนึ่งในสิบของการซื้อขายหุ้นทั้งหมดในสหรัฐอเมริกา รายงานการขาดทุน 440 ล้านดอลลาร์ ก.ล.ต. นับได้ในภายหลังมากกว่า 460 ล้านดอลลาร์ ปรับ Knight สิบสองล้านดอลลาร์ และเขียนการวิเคราะห์หลังเกิดเหตุเอง: สิบหน้า ไม่มีคำคุณศัพท์

0:25 มันเกิดขึ้นได้อย่างไร ทำไมเป็นไปได้ และใครเป็นผู้รับผิดชอบจริงๆ นี่คือ The Daily Diff, การวิเคราะห์หลังเกิดเหตุ 27 กรกฎาคม ตลาดหลักทรัพย์นิวยอร์กเปิดตัวโครงการสภาพคล่องสำหรับรายย่อยใน 1 สิงหาคม ดังนั้น Knight จึงคัดลอกรหัสใหม่ลงใน SMARS เราเตอร์คำสั่งซื้อของตน ทีละไม่กี่เซิร์ฟเวอร์ต่อวัน ด้วยมือ ช่างเทคนิคหนึ่งคน, แปดเซิร์ฟเวอร์, เจ็ดสำเนา ไม่มีใครตรวจสอบ; ไม่มีกฎใดบอกว่าใครต้องทำ 8:01 น. ระบบภายในเริ่มส่งอีเมลถึงพนักงานแจ้งข้อผิดพลาดว่า: Power

0:51 Peg ถูกปิดใช้งาน อีเมลเก้าสิบเจ็ดฉบับก่อนเปิดตลาด ไม่ได้ออกแบบมาเป็นการแจ้งเตือน ดังนั้นไม่มีใครอ่าน ซึ่งเป็นการตัดสินใจออกแบบที่มีราคา 9:30 น. ตลาดเปิด เซิร์ฟเวอร์เจ็ดเครื่องรันรหัสใหม่ เครื่องที่แปดเห็นแฟล็กเดียวกันและรัน Power Peg แทน: รหัสที่ Knight เลิกใช้ในปี 2003 และไม่เคยลบ มันส่งคำสั่งซื้อย่อยสำหรับคำสั่งซื้อของลูกค้า 212 รายการ และไม่เคยหยุด

1:13 การดำเนินการสี่ล้านรายการ หุ้น 397 ล้านหุ้น บัญชีหลักทรัพย์เพิ่มขึ้นเกินวงเงินสองล้านดอลลาร์ ซึ่งไม่มีการเชื่อมต่อกับอะไร วิศวกร ในตลาดจริง ถอนการติดตั้งรหัสใหม่จากเซิร์ฟเวอร์เจ็ดเครื่องที่ดี ซึ่งเปิดใช้งาน Power Peg ทุกที่ ประมาณ 10:15 น. มันหยุด: ถือยาวสามพันห้าร้อยล้าน ถือชอร์ตสามพันหนึ่งร้อยห้าสิบล้าน

1:31 หนึ่ง: เงื่อนไขการหยุดของ Power Peg, ตัวนับที่บอกว่าคำสั่งหลัก ถูกเติมเต็ม, ถูกย้ายในปี 2005 และไม่เคยทดสอบใหม่, ดังนั้นรหัสที่เลิกใช้แล้ว วนไปเรื่อยๆ สอง: ฟีเจอร์ใหม่นำแฟล็กเก่าของ Power Peg กลับมาใช้ใหม่ ดังนั้น "ใช่" เดียวกันจึงมีความหมายสองอย่างบนเซิร์ฟเวอร์สองเครื่อง สาม: ไม่มีสวิตช์ปิด ไม่มีอะไรเปรียบเทียบคำสั่งขาออกกับคำสั่งขาเข้า; ไม่มีอะไรหยุด SMARS จอภาพความเสี่ยงเป็นหน้าจอที่มนุษย์เฝ้าดู; มันไม่แสดงขีดจำกัด git blame: แฟล็กที่ถูกนำกลับมาใช้ใหม่แทนที่จะเป็นแฟล็กใหม่, รหัสที่ไม่มีการใช้งานมาเก้าปี

2:00 ปี, และการปรับใช้ด้วยมือที่ไม่มีผู้ตรวจสอบคนที่สอง ไม่ใช่ช่างเทคนิค คำสั่งของ ก.ล.ต. ไม่เคยระบุชื่อเขา และฉันก็จะไม่ระบุเช่นกัน รัศมีการระเบิด: 460 ล้านดอลลาร์ ประมาณสิบล้านดอลลาร์ต่อนาที หุ้นลดลง 63 เปอร์เซ็นต์เหลือสองดอลลาร์ห้าสิบแปด, การช่วยเหลือ 400 ล้านดอลลาร์ ที่หนึ่งดอลลาร์ห้าสิบต่อหุ้น, การควบรวมกิจการกับ Getco ก่อนคริสต์มาส Hacker News, วันพฤหัสบดี: มันทำงาน 45 นาทีได้อย่างไรโดยไม่มีมนุษย์เข้ามาแทรกแซง? ไม่เลย มนุษย์ทำให้มันแย่ลง

2:25 คำตัดสิน, การวิเคราะห์หลังเกิดเหตุ: revert Knight ไม่เคยเขียนการวิเคราะห์หลังเกิดเหตุของตัวเอง; ผู้ควบคุมทำ สิบสี่เดือนต่อมา และการแก้ไขคือค่าปรับและการควบรวมกิจการ วันจันทร์: ฟีเจอร์ใหม่, แฟล็กใหม่; รหัสที่ไม่มีการใช้งานจะถูกลบ ไม่ถูกปิดใช้งาน; อะไรก็ตามที่ส่งคำสั่งจะได้รับสวิตช์ปิด ส่งเหตุการณ์ที่คุณยังไม่ได้รับอนุญาตให้พูดถึงมาให้ฉัน ในความคิดเห็น หรือที่ the daily diff dot dev และนั่นคือความแตกต่างสำหรับวันนี้

2:48 ฉันคือนิโกะจาก Axrisi Merge responsibly

แหล่งที่มา

  1. SEC Administrative Order, Release No. 34-70694 (Oct 16, 2013), In the Matter of Knight Capital Americas LLCwww.sec.gov
  2. SEC press release 2013-222, "SEC Charges Knight Capital With Violations of Market Access Rule"www.sec.gov
  3. Knight Capital Group 8-K, Aug 2, 2012 (the $440M statement)www.sec.gov
  4. Knight Capital Group 8-K, Aug 6, 2012 (the $400M convertible preferred)www.sec.gov
  5. Knight / GETCO merger announcement, Dec 19, 2012www.sec.gov
  6. NYT DealBook, "Knight Capital Says Trading Glitch Cost It $440 Million" (Aug 2, 2012)archive.nytimes.com
  7. Hacker News, Aug 2, 2012 (73 points)news.ycombinator.com
  8. Hacker News, "The $440M software error at Knight Capital" (294 points)news.ycombinator.com

วิดีโอที่เกี่ยวข้อง

postmortem · th · 19 ก.ย. 2569

Google Cloud หยุดทำงานเนื่องจากช่องว่างเปล่า สามชั่วโมง

แถวนโยบายที่มีช่องว่างเปล่าบางส่วนทำให้เกิดข้อผิดพลาด null pointer และ Google Cloud หยุดทำงานพร้อมกันในทุกภูมิภาค จากนั้น Cloudflare ก็ล่มตามไปด้วย วันที่ 12 มิถุนายน 2025, 17:49 UTC: Service Control

2:57 ↗
postmortem · th · 12 ก.ย. 2569

Regex ทำให้ Cloudflare ล่มเป็นเวลา 27 นาที

2 กรกฎาคม 2019, 13:42 UTC: กฎใหม่หนึ่งข้อสำหรับ Web Application Firewall ของ Cloudflare ใช้งานจริงในกว่า 180 เมืองในเวลาประมาณสองวินาที เป็นกฎ XSS ในโหมดจำลอง ดังนั้นจึงไม่บล็อกอะไรเลย แต่ยังคงทำงานใน

3:00 ↗
postmortem · th · 25 ก.ย. 2569

ข้อผิดพลาดหนึ่งมิลลิวินาทีหยุดการจราจรทางอากาศของสหราชอาณาจักร หกชั่วโมง

เวลา 10:00 น. ของวันอังคารที่ 8 กันยายน คำขอ squawk-code ปกติหนึ่งรายการภายในระบบน่านฟ้าแห่งชาติ (NAS) ของ NATS ถูกขัดจังหวะด้วยข้อความที่มีลำดับความสำคัญสูงกว่า ในขณะที่กำลังอัปเดตค่าบางส่วน หน้าต่าง

3:06 ↗
postmortem · th · 22 ก.ย. 2569

การรีบูตส่งผลให้ Telstra ย้อนกลับไปปี 2006 โทรศัพท์เก้าล้านเครื่อง

วิศวกรในเมลเบิร์นเปิดเครื่องโครงแชสซีควบคุมเวลาอีกครั้งในเวลา 02:50 น. และเมื่อถึงเวลาอาหารเช้า เครือข่ายมือถือที่ใหญ่ที่สุดของออสเตรเลียก็เห็นพ้องต้องกันว่ามันคือเดือนพฤศจิกายน 2006 8 กรกฎาคม 2026: ก

3:15 ↗