作者 | Matt Saunders
譯者 | 劉雅夢(mèng)
策劃 | 丁曉昀
PagerDuty 是一個(gè)事件管理平臺(tái),被成千上萬(wàn)的組織用來(lái)提醒他們系統(tǒng)上的問(wèn)題,它在 2025 年 8 月 28 日遭遇了一次重大的服務(wù)中斷。在一份全面的服務(wù)中斷報(bào)告中,該公司詳細(xì)說(shuō)明了問(wèn)題的范圍、對(duì)客戶(hù)的影響,以及如何防止故障再次發(fā)生。
這次事件中斷或延遲了對(duì) PagerDuty 美國(guó)服務(wù)區(qū)域客戶(hù)接收傳入事件的處理。嚴(yán)重的服務(wù)降級(jí)影響了 PagerDuty 超過(guò) 9 個(gè)小時(shí)。在高峰期,大約 95% 的事件在 38 分鐘內(nèi)被拒絕,18% 的創(chuàng)建請(qǐng)求在 130 分鐘內(nèi)產(chǎn)生了錯(cuò)誤。
根據(jù)服務(wù)中斷報(bào)告,原因是在推出一項(xiàng)新功能時(shí)出現(xiàn)了一個(gè)缺陷,該功能旨在改善 API 和密鑰使用的審計(jì)和日志記錄。隨著增量推出進(jìn)程的進(jìn)行,PagerDuty 的 Kafka 集群的使用量錯(cuò)誤地超過(guò)了系統(tǒng)的容量。
由于上述功能的邏輯錯(cuò)誤,每個(gè) API 請(qǐng)求都實(shí)例化了一個(gè)新的 Kafka 生產(chǎn)者,而不是使用單個(gè) Kafka 生產(chǎn)者來(lái)產(chǎn)生消息。
報(bào)告解釋說(shuō),PagerDuty 對(duì)如何使用 pekko-connectors-kafka Scala 庫(kù)的解釋導(dǎo)致了這個(gè)編碼錯(cuò)誤。報(bào)告詳細(xì)說(shuō)明了額外負(fù)載的范圍:“Kafka 最終在高峰時(shí)每小時(shí)追蹤了近 420 萬(wàn)個(gè)額外的生產(chǎn)者,這比我們通常的新生產(chǎn)商數(shù)量高出 84 倍?!彼^續(xù)解釋了 Kafka 如何開(kāi)始抖動(dòng),然后耗盡可用的 JVM 堆,導(dǎo)致集群的級(jí)聯(lián)故障。
由于我們的許多系統(tǒng)都依賴(lài)于 Kafka,這種減速會(huì)蔓延開(kāi)來(lái),服務(wù)最終完全失去了與 Kafka 交互的能力。
這在依賴(lài) Kafka 進(jìn)行通信的其他服務(wù)中引起了連鎖反應(yīng),因?yàn)樗鼈儫o(wú)法連接到 Kafka 集群。這增加了服務(wù)中斷的影響和恢復(fù)情況所需的時(shí)間。公司承認(rèn),“級(jí)聯(lián)故障本質(zhì)上很難預(yù)測(cè),一個(gè)服務(wù)中的小問(wèn)題可能會(huì)以系統(tǒng)圖上不明顯的方式波及到其他服務(wù)?!?/p>
更具有諷刺意味的是,這一事件影響了一個(gè)主要的事件管理平臺(tái),由于 PagerDuty 工作人員起草的更新沒(méi)有出現(xiàn)在公共狀態(tài)頁(yè)面上,導(dǎo)致了外部溝通的延遲。進(jìn)一步增加客戶(hù)的混亂,因?yàn)檫@種“元故障”意味著他們無(wú)法在服務(wù)中斷期間獲得更新。
PagerDuty 并不是最近唯一遭受長(zhǎng)時(shí)間停機(jī)的事件管理平臺(tái),Opsgenie 的客戶(hù)在 2022 年就經(jīng)歷了 14 天的停機(jī)。
社區(qū)的反應(yīng)顯示了現(xiàn)代組織對(duì)可靠事件管理系統(tǒng)的重視,Reddit 上的一位用戶(hù)解釋了服務(wù)中斷期間缺乏系統(tǒng)可見(jiàn)性造成的壓力:“今天應(yīng)該是工作的大日子。相反,我因?yàn)?PagerDuty 崩潰而被客戶(hù)責(zé)罵……你有沒(méi)有在值班時(shí)感覺(jué)自己就像瞎了一樣?”用戶(hù) Vimda 隨后建議為所有系統(tǒng)增加冗余:“總是有一個(gè)備用警報(bào)系統(tǒng),即使是手動(dòng)分類(lèi)。”用戶(hù) Twirrim 對(duì)此表示贊同,他深思熟慮地認(rèn)為監(jiān)控工具本身也需要監(jiān)控,并指出:“單點(diǎn)故障是可靠性的最大敵人。有時(shí)它們是不可避免的(例如,成本過(guò)高),所以你必須考慮‘如果出了問(wèn)題怎么辦’?!?/p>
除了詳細(xì)的服務(wù)中斷時(shí)間線和原因外,PagerDuty 還列出了一些未來(lái)的改進(jìn)和承諾,以避免任何重復(fù)的情況,包括擴(kuò)大他們自己的監(jiān)控,特別是在 JVM 和 Kafka 層面,并實(shí)施更嚴(yán)格的變更管理護(hù)欄,以便工程師仍然可以快速工作,但增加了安全性。
社區(qū)的反應(yīng)證實(shí)了所有組織都需要確保自己的系統(tǒng)和流程具有彈性,通過(guò)有意識(shí)地確保在第三方中斷的情況下有冗余和備份計(jì)劃。PagerDuty 自己的服務(wù)中斷報(bào)告和未來(lái)的改進(jìn)計(jì)劃反映了一種強(qiáng)大且心理上安全的文化。
PagerDuty 的持續(xù)學(xué)習(xí)文化意味著我們從這樣的事件中變得更強(qiáng)大——無(wú)論是在我們的技術(shù)還是我們的團(tuán)隊(duì)中。
https://www.infoq.com/news/2025/09/pagerduty-kafka-outage/
聲明:本文為 InfoQ 翻譯,未經(jīng)許可禁止轉(zhuǎn)載。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.