本文為您介紹MaxCompute SQL作業的智能診斷功能,旨在儘可能提供診斷結果和建議,以協助您解決作業報錯問題或提升查詢效能,包括如何查看診斷結果和建議,以及解讀分析結果。鑒於查詢效能受多種因素影響,智能診斷僅提供整體查詢效能的部分異常及建議。
有關更全面的作業診斷及調優資訊,詳情請參見Logview診斷實踐和SQL調優。
使用限制
當前僅支援對SQL作業進行診斷。
查看智能診斷結果及建議
登入MaxCompute控制台,在左上方選擇所屬地區。
在左側導覽列單擊
,進入作業營運頁面。說明查詢作業時間範圍預設設定為1小時,您可以根據專案作業啟動並執行實際情況進行選擇調整。
單擊目標作業智能診斷列的診斷結果標籤,可跳轉至作業洞察頁面,在作業概覽頁簽下查看詳細的診斷結果說明以及最佳化建議指導。
診斷結果說明
智能診斷列為空白,存在以下情形之一。
作業運行正常,未診斷出異常項。
作業正在運行中或剛剛結束,無法即時展示診斷結果。
在2023年11月01日之前啟動並執行作業。
在中國香港、華東2金融雲、華北2金融雲(邀測)、華北2阿里政務雲1、華南1金融雲、日本(東京)、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、德國(法蘭克福)、英國(倫敦)、美國(矽谷)、美國(維吉尼亞)、阿聯酋(杜拜)、沙特(利雅得)以上地區啟動並執行SQL作業。
若要查看詳細的診斷結果,您可以在作業營運頁面單擊目標作業操作列的洞察,手動觸發診斷。
紅色標籤表示作業報錯資訊診斷結果,橙色標籤表示作業效能診斷結果。
解讀智能診斷結果
以下為您介紹SQL作業智能診斷結果的含義以及解決方案。
資源不足
當作業使用的計算資源量持續低於請求計算資源量的95%且超過5分鐘,則被判定為資源不足。
對於使用隨用隨付計算資源啟動並執行作業,由於隨用隨付資源集區為共用型,計算作業無法指定用量,且按需搶佔資源。若瞬時作業數量過多,存在因眾多使用者搶佔而無法滿足請求的資源量,從而導致作業資源不足的情況。
對於使用訂用帳戶計算資源的作業,由於總體作業運行資料量大、申請資源多,以及作業優先順序低,導致該作業出現資源等待情況。
此時您可以前往目標作業的作業洞察頁面,在資源消耗頁簽查看作業資源消耗情況及某時刻計算Quota的資源分派情況,以判斷導致資源不足的具體原因。然後依據業務情況最佳化任務執行,進行作業優先順序調整或計算資源管理。
資料扭曲
資料扭曲是巨量資料計算一個常見的問題,通常表現為作業的執行進度停留在99%,這使人產生作業執行被卡住的印象。這一現象源於資料分布不均勻,導致部分Worker迅速完成計算,而另一些Worker卻需要運行較長時間處理。在資料量呈爆炸式增長的巨量資料時代,資料扭曲問題會嚴重影響分布式程式的執行效率。因此必須儘早識別出資料扭曲問題,進而分析其產生原因並進行排查與解決。
MaxCompute根據以下標準判定作業是否存在資料扭曲問題:
耗時最長的Worker已耗用時間大於等於所有Worker平均已耗用時間3倍,且平均運行時間長度大於30秒。
存在輸入記錄數大於等於所有Worker平均輸入記錄數3倍的Worker。
MaxCompute提供了發生資料扭曲的節點(Worker)名稱,以便於您後續通過LogView進行排查及調優,詳情請參見使用Logview查看作業運行資訊。
關於更多資料扭曲情境以及對應的解決方案資訊,詳情請參見資料扭曲調優。
資料膨脹
當作業的輸出記錄數超過輸入記錄數的10倍時,該Fuxi Task被判定為存在資料膨脹問題。
MaxCompute提供了發生資料膨脹的Fuxi Task名稱,以便於您後續通過LogView進行排查及調優,詳情請參見使用Logview查看作業運行資訊。
關於更多產生資料膨脹的原因和處理措施資訊,詳情請參見資料膨脹最佳化。
模式回退
MaxCompute作業啟動並執行模式有查詢加速(MCQA)模式和普通模式。
對於資料量較大且不需要返回查詢結果的作業,僅可採用普通模式。因此,在資源和作業都正常的情況下,作業運行時間長度通常不會出現較大波動。
對於資料量較小的互動式查詢作業,通常會觸發查詢加速模式運行,該模式下的作業執行速度比普通作業快。而MaxCompute並不保證作業每次都能觸發進入查詢加速模式,因此可能出現查詢加速作業轉至普通作業,進而導致作業運行時間長度未能達到預期。
MaxCompute根據作業出現的Task Rerun子狀態,判定作業是否存在模式回退問題。您可選擇在作業代碼首行添加set odps.service.mode=off;
直接讓作業採用普通模式運行,從而避免嘗試使用查詢加速模式而導致失敗和時間浪費。
作業報錯資訊診斷
對於運行失敗的作業,MaxCompute會根據錯誤資訊匹配報錯原因類別,並提供相應的錯誤描述及解決方案,當前僅覆蓋了部分SQL類報錯,對於未能提供診斷結果的失敗作業,需要您自行查閱錯誤碼,以便進行問題的定位和解決方案的查詢。
您有任何相關問題或需要協助,可以通過填寫DingTalk群申請表單加入MaxCompute開發人員社區群(DingTalk群號:11782920)或您的專屬釘群等方式聯絡我們。
相關文檔
如何對長周期指標的計算進行最佳化,詳情請參見長周期指標的計算最佳化方案。
如何通過MaxCompute控制台的作業洞察功能進行作業層級資源分析,瞭解作業資源消耗詳情,同時為您提供最佳化作業運行時間長度的建議,詳情請參見作業級資源分析最佳實務。