异步请求积压可视化|如何 1 分钟内快速定位函数计算积压问题
作者 | 千風(fēng)
本文分為三個(gè)部分:概述中引入了積壓問題,并介紹了函數(shù)計(jì)算異步調(diào)用基本鏈路;并在指標(biāo)介紹部分詳細(xì)介紹了指標(biāo)查看方式,分類解讀了不同的指標(biāo)含義;最后以一個(gè)常見的異步請(qǐng)求積壓場(chǎng)景為例,介紹如何在 1 分鐘內(nèi)快速定位積壓問題。
為異步調(diào)用保駕護(hù)航
使用函數(shù)計(jì)算異步調(diào)用的開發(fā)者最關(guān)心的問題是:調(diào)用請(qǐng)求能否在預(yù)期的時(shí)間內(nèi)被處理完成。若沒能處理完成,那么在客戶眼中就是異步調(diào)用請(qǐng)求積壓了,然而基于之前函數(shù)計(jì)算異步調(diào)用指標(biāo)體系,無論是定位積壓,還是查看積壓,過程都是十分繁瑣的。
針對(duì)以上問題,函數(shù)計(jì)算推出了一系列異步調(diào)用請(qǐng)求積壓相關(guān)的指標(biāo),能夠幫助用戶快速定位請(qǐng)求積壓,向用戶展示積壓量化值。本文將詳細(xì)介紹如何通過這些監(jiān)控指標(biāo)快速定位到函數(shù)異步調(diào)用出現(xiàn)的積壓問題,為各位開發(fā)者講解升級(jí)后的異步調(diào)用指標(biāo)體系。
在開始之前,先簡單介紹下函數(shù)計(jì)算異步調(diào)用。
異步調(diào)用是函數(shù)計(jì)算調(diào)用函數(shù)的一種方式,通過異步調(diào)用你不僅可以確保函數(shù)會(huì)至少執(zhí)行一次,還可以保存調(diào)用執(zhí)行過程中的狀態(tài)轉(zhuǎn)換信息和執(zhí)行結(jié)果,其調(diào)用鏈路如下所示:
用戶/事件源發(fā)起異步調(diào)用請(qǐng)求后會(huì)立刻返回本次請(qǐng)求 ID,隨后函數(shù)計(jì)算系統(tǒng)將本次調(diào)用的相關(guān)信息轉(zhuǎn)換為消息的格式,放入 MNS 消息隊(duì)隊(duì)列中供系統(tǒng)內(nèi)下游模塊消費(fèi),下游模塊會(huì)基于解析出來的調(diào)用消息進(jìn)行函數(shù)調(diào)用。
調(diào)用完成后,如果函數(shù)配置了 Destination,則系統(tǒng)會(huì)基于調(diào)用結(jié)果以及 Destination 內(nèi)容進(jìn)行進(jìn)一步處理,Destination 相關(guān)內(nèi)容介紹請(qǐng)參考異步調(diào)用文檔:
https://help.aliyun.com/document_detail/181866.html
指標(biāo)升級(jí)
升級(jí)后的函數(shù)計(jì)算異步調(diào)用鏈路監(jiān)控指標(biāo)主要新增了如下幾類:
下面我們將對(duì)上述指標(biāo)進(jìn)行詳細(xì)解讀。
指標(biāo)查看
目前可以通過函數(shù)計(jì)算控制臺(tái)或者 Serverless Devs 工具這兩種方式查看函數(shù)的監(jiān)控指標(biāo)大盤,下面我們將以控制臺(tái)為例,指導(dǎo)大家如何查看異步調(diào)用鏈路相關(guān)的監(jiān)控指標(biāo),基于 Serverless Devs 的查看方式可以參考:
https://github.com/devsapp/fc/blob/main/docs/zh/command/metrics.md
下面介紹的步驟前提是已開通了函數(shù)計(jì)算服務(wù);且成功創(chuàng)建了服務(wù)以及函數(shù),如果還未進(jìn)行這些操作,請(qǐng)參考使用控制臺(tái)創(chuàng)建函數(shù):
https://help.aliyun.com/document_detail/51783.html
首先打開函數(shù)計(jì)算控制臺(tái),點(diǎn)擊左側(cè)監(jiān)控大盤標(biāo)簽,滑倒底部,可以查看到該地域所有服務(wù)的異步調(diào)用處理情況以及異步消息處理平均延時(shí)概覽表格:
此時(shí)我們點(diǎn)擊任意一個(gè)服務(wù)名稱,進(jìn)入后,可以看到該服務(wù)下所有函數(shù)的異步調(diào)用處理情況;以及異步消息處理平均延時(shí)概覽表格:
接下來我們點(diǎn)擊任意一個(gè)函數(shù)名稱,進(jìn)入后可以看到所有函數(shù)緯度的監(jiān)控指標(biāo),并以圖的形式展示:
至此,我們已經(jīng)學(xué)會(huì)了這些指標(biāo)的查看途徑。下面繼續(xù)為各位開發(fā)者介紹解讀上述異步鏈路相關(guān)指標(biāo)。
指標(biāo)解讀
我們將根據(jù)不同的指標(biāo)類型對(duì)監(jiān)控指標(biāo)進(jìn)行分類解讀。
異步調(diào)用處理情況
異步請(qǐng)求入隊(duì)
異步調(diào)用中,到達(dá)函數(shù)計(jì)算的請(qǐng)求數(shù),當(dāng)入隊(duì)請(qǐng)求數(shù)大于請(qǐng)求處理完成數(shù)時(shí),表示有請(qǐng)求積壓,函數(shù)處理異步請(qǐng)求的速度小于異步請(qǐng)求發(fā)起的速度。請(qǐng)調(diào)整函數(shù)彈性伸縮(含預(yù)留資源)上限,參考:
https://help.aliyun.com/document_detail/185038.html#task-2538034
或可釘釘搜索加入阿里函數(shù)計(jì)算官網(wǎng)客戶群(11721331)聯(lián)系我們進(jìn)行處理圖片。
異步請(qǐng)求處理完成
異步調(diào)用中,函數(shù)計(jì)算處理完成的請(qǐng)求數(shù),異步請(qǐng)求處理完成數(shù)量,應(yīng)始終不大于異步請(qǐng)求入隊(duì)的數(shù)量。
異步請(qǐng)求積壓數(shù)
已經(jīng)到達(dá)函數(shù)計(jì)算的異步請(qǐng)求中,等待處理以及正在處理中的請(qǐng)求統(tǒng)一視為積壓請(qǐng)求, 這些請(qǐng)求的數(shù)量為異步消息積壓數(shù),當(dāng)這個(gè)值不為 0 時(shí),表示異步調(diào)用請(qǐng)求是有積壓的。
該指標(biāo)將異步調(diào)用請(qǐng)求積壓量化,解決積壓數(shù)不可見問題,極大提高了異步調(diào)用的可觀測(cè)性,也是本次升級(jí)的重要內(nèi)容之一。
異步請(qǐng)求處理延遲
平均處理時(shí)延
函數(shù)異步調(diào)用請(qǐng)求從進(jìn)入處理隊(duì)列到開始處理的時(shí)延,按指定時(shí)間粒度統(tǒng)計(jì)求平均值。當(dāng)該值高于預(yù)期時(shí),表明函數(shù)異步調(diào)用請(qǐng)求可能存在積壓。
“異步請(qǐng)求入隊(duì)”、“異步請(qǐng)求處理完成” 以及 “平均處理延時(shí)” 這三個(gè)指標(biāo)被放置在監(jiān)控大盤的概覽圖表中,旨在幫助用戶快速定位到出現(xiàn)積壓的函數(shù),解決積壓定位難的問題。
1 分鐘定位積壓問題
在之前的異步調(diào)用指標(biāo)體系下,如果想要定位積壓問題,首先需要找到積壓函數(shù),此時(shí)需要逐個(gè)函數(shù)查看其函數(shù)監(jiān)控指標(biāo)詳情,定位成功后,也無法直觀看到具體的積壓量化值。
升級(jí)后的異步調(diào)用指標(biāo)體系能夠很好地解決積壓問題定位難以及積壓量化的問題。下面將圍繞積壓問題的場(chǎng)景,描述如何使用上述指標(biāo)快速定位積壓問題。
業(yè)務(wù)場(chǎng)景
問題描述:
小張的業(yè)務(wù)涉及到三個(gè)函數(shù),且都是異步調(diào)用,某天用戶的業(yè)務(wù)出了問題,每個(gè)環(huán)節(jié)的異步處理時(shí)延都增大了。為了快速定位問題,用戶想到了異步鏈路監(jiān)控指標(biāo),進(jìn)行了如下定位動(dòng)作。
定位過程:
首先打開地域級(jí)別的監(jiān)控大盤,選擇目標(biāo)時(shí)間段,查看該地域下各個(gè)服務(wù)的監(jiān)控指標(biāo);
發(fā)現(xiàn)多個(gè)服務(wù)的異步調(diào)用平均處理延時(shí)高于預(yù)期,同時(shí)其異步請(qǐng)求入隊(duì)數(shù)均大于請(qǐng)求處理完成數(shù),表示這些服務(wù)都有一定程度異步調(diào)用消息積壓,且 A-Service 的異步請(qǐng)求入隊(duì)數(shù)量和異步調(diào)用請(qǐng)求完成數(shù)差別最大,積壓最嚴(yán)重,點(diǎn)擊 A-Service 查看監(jiān)控指標(biāo):
可以看到該服務(wù)下的函數(shù) A-Function 是積壓源,點(diǎn)擊 A-Function 查看函數(shù)緯度的監(jiān)控指標(biāo):
從請(qǐng)求積壓數(shù)圖中可以看到積壓是從 15:07 時(shí)間開始的,當(dāng)前該賬號(hào)下未完成的異步調(diào)用請(qǐng)求數(shù)最大時(shí)大約有 7000 左右 ,同時(shí)異步調(diào)用請(qǐng)求處理平均時(shí)延在逐步升高,目前是 30 萬毫秒左右。每分鐘處理的異步調(diào)用請(qǐng)求數(shù)在 800 -- 900 之間。
注:由于小張目前使用的是賬號(hào)級(jí)別共享隊(duì)列,因此異步請(qǐng)求積壓數(shù)顯示的整個(gè)賬號(hào)下的異步調(diào)用請(qǐng)求積壓數(shù),如因業(yè)務(wù)需要,函數(shù)需要獨(dú)享隊(duì)列,可以聯(lián)系函數(shù)計(jì)算團(tuán)隊(duì)進(jìn)行開通。
進(jìn)一步發(fā)現(xiàn),地域按量實(shí)例數(shù)圖中實(shí)例數(shù)已經(jīng)打滿,因此定位到原因是因?yàn)?A-Function 的請(qǐng)求激增,賬號(hào)級(jí)別的按量實(shí)例數(shù)限制打滿了,使得其他函數(shù)的異步調(diào)用也受到了影響,導(dǎo)致業(yè)務(wù)每個(gè)環(huán)節(jié)都受到了影響。
問題解決:
定位到問題后,小張立刻聯(lián)系了函數(shù)計(jì)算團(tuán)隊(duì),基于業(yè)務(wù)量進(jìn)行了地域按量實(shí)例限制調(diào)整。
同時(shí) A-Function 調(diào)用量最大,可能會(huì)對(duì)地域緯度的異步調(diào)用請(qǐng)求調(diào)度以及按量實(shí)例數(shù)產(chǎn)生一定的沖擊,對(duì)其他函數(shù)的異步調(diào)用請(qǐng)求造成影響,因此函數(shù)計(jì)算團(tuán)隊(duì)建議為 A-Function 開啟獨(dú)享隊(duì)列功能,同時(shí)設(shè)置彈性實(shí)例上限,這樣將 A-Function 的異步調(diào)用請(qǐng)求進(jìn)行隔離,避免對(duì)其他函數(shù)的影響。
總結(jié)
升級(jí)后的函數(shù)計(jì)算異步調(diào)用監(jiān)控指標(biāo)體系能夠幫助用戶解決積壓問題定位難以及積壓量化等問題,結(jié)合云監(jiān)控報(bào)警的設(shè)置,極大提高了函數(shù)計(jì)算異步調(diào)用應(yīng)用的穩(wěn)定性。
同時(shí),為了盡量避免請(qǐng)求積壓情況的發(fā)生,我們目前正在對(duì)函數(shù)計(jì)算異步處理系統(tǒng)層面進(jìn)行優(yōu)化,包括隊(duì)列回收機(jī)制、獨(dú)享隊(duì)列能力以及積壓消息重定向策略等,從而提高函數(shù)計(jì)算系統(tǒng)處理異步調(diào)用請(qǐng)求的能力。這樣,通過強(qiáng)大的異步調(diào)用請(qǐng)求處理系統(tǒng)以及全面的監(jiān)控指標(biāo)體系,為函數(shù)計(jì)算異步調(diào)用保駕護(hù)航。
福利大放送
開發(fā)者如何自我提升?如何拓展自身技能,了解最優(yōu)學(xué)習(xí)路徑迅速入門?阿里云 Serverless 免費(fèi)開放超全開發(fā)者學(xué)習(xí)資料,將最前沿的技術(shù)知識(shí)沉淀送給各位。內(nèi)含:技術(shù)電子書、技術(shù)大會(huì)資料合集、知識(shí)圖譜、18 節(jié)入門視頻課等,助力所有開發(fā)者共同學(xué)習(xí)進(jìn)步!
關(guān)注 Serverless 公眾號(hào)后臺(tái)回復(fù) 學(xué)習(xí) 即可獲得開發(fā)者學(xué)習(xí)資料下載鏈接!
發(fā)布云原生技術(shù)最新資訊、匯集云原生技術(shù)最全內(nèi)容,定期舉辦云原生活動(dòng)、直播,阿里產(chǎn)品及用戶最佳實(shí)踐發(fā)布。與你并肩探索云原生技術(shù)點(diǎn)滴,分享你需要的云原生內(nèi)容。
關(guān)注【阿里巴巴云原生】公眾號(hào),獲取更多云原生實(shí)時(shí)資訊!
總結(jié)
以上是生活随笔為你收集整理的异步请求积压可视化|如何 1 分钟内快速定位函数计算积压问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云计算情报局预告|告别 Kafka St
- 下一篇: 阿里云资深专家李国强:云原生的一些趋势和