DaveC
1 weeks ago
又見全球網路大當機,11/18 Cloudflare 崩潰的五小時發生了什麼事?-黑暗執行緒
爆炸的 BM 新版引擎 FL2 採用 Rust 開發,基於效能考量會預設配置好 200 筆記憶體空間用來存特徵資料,畢竟一個分析請求用到的特徵數量不太可能超過 200 筆(目前只用到 60 個),抓 200 這個數字也算合理。但現在因 SQL 查詢寫法出錯讓結果筆數翻倍超過 200 筆,記憶體放不下,該處程式寫法是呼叫 unwrap(),選擇在出錯時直接結束程式。因此,一旦 BM 程式抓到過量特徵資料程式便會崩潰結束。
DaveC
1 weeks ago
這段有問題的資料庫權限異動及查詢調整採漸進方式發佈到所有資料庫,故在早期只有部分資料庫已更新。當 BM 連到更新過的資料庫拿到超過 200 筆就會爆炸,五分鐘後切回尚未更新的資料庫便恢復正常,呈現時好時壞的狀況,讓 Cloudflare 工程師誤判這堆間歇錯誤是 DDoS 攻擊引發(好巧不巧前一天微軟經歷了 DDoS 攻擊,很容易往這方面聯想),沒在第一時間想到與資料庫異動與程式修改有關。
這其實只是為什麼會有 5xx 錯誤的原因,還沒解釋為什麼噗浪能正常上(因為是用舊版引擎,但這時機器人防護效果為0);真要解釋還是那個 SQL 問題與後續沒有驗證造成的XD
立即下載