+− THE DAILY DIFFdev & AI news
REVERT

部署到 8 個伺服器中的 7 個,損失 4.6 億美元。45 分鐘。

美國東部時間 2012 年 8 月 1 日上午 9:30:Knight Capital 是美國股票交易中約十分之一的做市商,剛將新的訂單路由代碼部署到其八個 SMARS 伺服器中的七個。

美國東部時間 2012 年 8 月 1 日上午 9:30:Knight Capital 是美國股票交易中約十分之一的做市商,剛將新的訂單路由代碼部署到其八個 SMARS 伺服器中的七個。第八個仍執行「Power Peg」,這是 2003 年停用的代碼,位於新功能重新使用的旗標之後。45 分鐘內,它不斷發送子訂單:400 萬次執行、3.97 億股,約 70 億美元的倉位,損失 4.6 億美元。開盤前已收到 97 封警告電郵。事後分析,來自美國證券交易委員會 (SEC) 自己的指令:無人審查的手動部署,具有兩種含義的旗標,2005 年移動且從未重新測試的停止計數器,不存在的緊急停止開關,以及在實時市場中使情況惡化的「修復」。關於修復的結論:REVERT。

閱讀書面版本(英文) ↗

本影片涵蓋的內容

  • 2012 年 7 月 27 日至 31 日:RLP 代碼手動複製到 8 個 SMARS 伺服器中的 7 個;沒有第二位審閱者,沒有書面程序
  • 8 月 1 日上午 8:01:開盤前收到 97 封「Power Peg 已禁用」電郵;未設計為警報,無人閱讀
  • 8 月 1 日上午 9:30 至 10:15:212 筆訂單在 154 隻股票中產生 400 萬次執行;35 億美元做多,31.5 億美元做空;損失 4.6 億美元;卸載新代碼使情況惡化
  • 8 月 2 日至 12 月 19 日:股價下跌 63% 至 2.58 美元,以每股 1.50 美元進行 4 億美元救援,與 GETCO 合併;2013 年 10 月:1200 萬美元 SEC 罰款,首個市場准入規則案例

翻譯的文字記錄

從英文原文旁白翻譯。可用的音頻和字幕由 YouTube 控制。

0:00 一間交易公司將新代碼部署到八個伺服器中的七個, 而第八個在 四十五分鐘內買賣了近七十億美元的股票,這是一筆巨款,即使對於星期三來說也是如此。 2012 年 8 月 1 日。 佔美國所有股票交易十分之一的 Knight Capital 報告損失 4.4 億美元。 美國證券交易委員會後來統計超過 4.6 億美元,罰款 Knight 1200 萬美元, 並親自撰寫事後分析:十頁,零形容詞。

0:25 它是如何發生的,為什麼會發生,以及誰真正該受責備。 這是 The Daily Diff,事後分析。 7 月 27 日。紐約證券交易所於 8 月 1 日啟動零售流動性計劃,因此 Knight 將新代碼複製到其訂單路由器 SMARS 上, 每天手動複製幾個伺服器。 一名技術人員,八個伺服器,七份副本。 沒有人檢查;沒有規定說任何人必須檢查。 上午 8:01。一個內部系統開始向員工發送一封錯誤電郵,內容是:Power

0:51 Peg 已禁用。開盤前有 97 封電郵。 它們並非設計為警報,所以沒有人閱讀它們, 這是一個代價不菲的設計決定。 9:30,市場開盤。 七個伺服器運行新代碼。 第八個看到相同的旗標,並運行 Power Peg:Knight 於 2003 年停用且從未刪除的代碼。 它為 212 個客戶訂單發送子訂單,且從不停止。

1:13 四百萬次執行。 三億九千七百萬股。 一個持有賬戶超出其二百萬美元的上限, 而該上限沒有連接任何東西。 工程師在實時市場中,從七個正常運作的伺服器中卸載新代碼, 這使得 Power Peg 在所有地方都開啟。 大約 10:15 停止:做多三十五億, 做空三十一點五億。

1:31 一:Power Peg 的停止條件,即表示主訂單已 填滿的計數器,於 2005 年移動且從未重新測試,因此停用代碼 永遠循環。二:新功能重新使用 Power Peg 的舊旗標, 因此在兩個伺服器上,相同的「是」表示兩件事。 三:沒有緊急停止開關。 沒有什麼將輸入訂單與輸出訂單進行比較;沒有什麼停止 SMARS。 風險監控器是一個由人類監視的屏幕;它沒有顯示限制。 git blame:重新使用旗標而不是新的旗標,九年內可調用的死代碼,

2:00 以及沒有第二雙眼睛審查的手動部署。 不是技術人員。 美國證券交易委員會的指令從未點名他,我也不會。 爆炸半徑:4.6 億美元,大約每分鐘 1000 萬美元。 股價下跌 63% 至 2.58 美元,以每股 1.50 美元進行 4 億美元救援, 聖誕節前與 Getco 合併。 Hacker News,星期四:它如何在沒有人介入的情況下運行 45 分鐘? 它沒有。人類讓它變得更糟。

2:25 結論,事後分析:REVERT。 Knight 從未撰寫自己的事後分析;監管機構撰寫了, 十四個月後,修復方案是罰款和合併。 星期一:新功能,新旗標;死代碼被刪除, 而不是禁用;任何發送訂單的東西都獲得一個關閉開關。 在評論中,或在 the daily diff dot dev 上,將你仍然不被允許談論的事件發送給我。 在評論中,或在 the daily diff dot dev 上。 這就是今天的 diff。

2:48 我是 Axrisi 的 Niko。 負責地合併。

來源

  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 · zh-HK · 2026年9月19日

Google Cloud 在空白欄位當機。三小時。

一個帶有幾個空白欄位的策略行觸發了空指標,Google Cloud 立即在所有區域當機 — 然後 Cloudflare 也隨之故障。2025 年 6 月 12 日,世界標準時間 17:49:Service Control,一個批准所有 Google Cloud API 請求的二進位檔案,讀取了一個帶有「非預期空白欄位」的配額策略變更,觸發了兩週前發布但沒有空值檢查和功能旗標的程式碼路徑,並在所有區

2:57 ↗
postmortem · zh-HK · 2026年9月12日

一個正規表達式擊潰了Cloudflare。持續27分鐘。

2019年7月2日,世界標準時間13:42:一條針對Cloudflare網絡應用程式防火牆的新規則在約兩秒鐘內於180多個城市上線。這是一條模擬模式下的XSS規則,因此它不會阻擋任何東西,但它仍然會在每個請求上運行,並且以.*(?:.*=.*)結尾。PCRE回溯,每個服務HTTP的CPU核心達到100%,每個透過Cloudflare代理的網站都會在27分鐘內返回502;流量下降82%。終止開關位於

3:00 ↗
postmortem · zh-HK · 2026年9月22日

重啟令 Telstra 倒退回 2006 年。九百萬部電話。

墨爾本的一名工程師在凌晨 2 時 50 分重啟計時機箱,到早餐時,澳洲最大的流動網絡竟以為是 2006 年 11 月。2026 年 7 月 8 日:Telstra NTP 機箱中的 GPS 卡在更換電源期間重啟,其韌體從未有 GPS 週數滾動更新,因此它選擇了舊的紀元,倒退了 1,024 週。由於 2025 年 10 月的變通方法使該卡成為網絡唯一的 stratum-1 來源 — 以及 2020

3:15 ↗