+− 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 伺服器中的七台。第八台仍然運行著 2003 年退役的「Power Peg」代碼,位於新功能重複使用的旗標後面。在 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 億美元。 SEC 後來統計超過 4.6 億,罰款 Knight 一千兩百萬, 並自行撰寫事後報告:十頁,零形容詞。

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

0:51 Peg 已禁用。開盤前共發送了九十七封電子郵件。 它們並非設計為警報,所以沒有人閱讀它們, 這是一個代價不菲的設計決策。 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 年,以及沒有第二雙眼睛的手動部署。 不是技術人員。 SEC 命令從未點名他,我也不會。 影響範圍:4.6 億美元,大約每分鐘一千萬美元。 股價下跌 63% 至 2.58 美元,以每股 1.50 美元進行 4 億美元救援, 聖誕節前與 Getco 合併。 Hacker News,週四:它是如何在沒有人介入的情況下運行 45 分鐘的? 它沒有。人類讓它變得更糟。

2:25 判決,事後報告:REVERT。 Knight 從未撰寫自己的事後報告;監管機構在 十四個月後撰寫,而解決方案是罰款和合併。 星期一:新功能,新旗標;刪除死代碼, 而不是禁用;任何發送訂單的東西都有一個關閉開關。 在評論中,或在 the daily diff dot dev 上,向我發送您仍然不允許談論的事件。 在評論中,或在 the daily diff dot dev 上,向我發送您仍然不允許談論的事件。 這就是今天的差異。

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

Google Cloud 在空白欄位上崩潰。三小時。

一個帶有幾個空白欄位的政策列導致空指標,Google Cloud 在所有區域同時崩潰 — 然後 Cloudflare 也隨之崩潰。2025 年 6 月 12 日,世界標準時間 17:49:Service Control 是核准每個 Google Cloud API 請求的二進位檔案,它讀取了一個帶有「非預期空白欄位」的配額政策變更,觸發了兩週前部署且沒有空值檢查和功能旗標的程式碼路徑,並在每個區域

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

一個正規表達式擊垮了 Cloudflare。27 分鐘。

2019 年 7 月 2 日,世界標準時間 13:42:Cloudflare 的網路應用程式防火牆 (WAF) 的一項新規則在大約兩秒鐘內在全球 180 多個城市上線。這是一項模擬模式下的 XSS 規則,因此它不會阻止任何內容,但它仍然會在每個請求上運行,並且它以 .*(?:.*=.*) 結尾。PCRE 進行回溯,每個處理 HTTP 請求的 CPU 核心都達到 100 %,每個經 Cloudfla

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

重新開機讓 Telstra 回到 2006 年。九百萬支手機受影響。

墨爾本的一名工程師在凌晨 2:50 重新啟動計時機箱,到早餐時間,澳洲最大的行動網路一致同意時間是 2006 年 11 月 8 日。2026 年 7 月 8 日:Telstra 的 NTP 機箱中一個 GPS 卡在電源維修期間重新啟動,其韌體從未進行過 GPS 週數翻轉更新,因此它選擇了舊的紀元,回到 1,024 週前。由於 2025 年 10 月的權宜之計,該卡成為網路唯一的 stratum-1

3:15 ↗