資料庫例項效能調優利器:Performance Insights

芊寶寶最可愛發表於2019-10-08

Performance Insights是什麼

阿里雲RDS Performance Insights是RDS CloudDBA產品一項專注於使用者資料庫例項效能調優、負載監控和關聯分析的利器,以簡單直觀的方式幫助使用者迅速評估資料庫負載,資源等待的源頭和對應SQL查詢語句,以此來指導使用者在何時、何處、採取何種行動進行資料效能最佳化。

幾個名詞解釋

Performance Insights:中文翻譯過來叫效能洞察。 
Active Session (AS):RDS資料庫系統中,活躍的會話數量。 
Average Active Session (AAS):一段時間內,RDS資料庫中平均活躍會話數量。 
Max Vcores:RDS資料庫例項最大可以使用到的CPU Cores數量。
AAS和MaxVcores來量化系統瓶頸

在文章開始,我們希望能夠把一個非常重要的問題解釋清楚:為什麼可以使用AAS (平均活躍會話數)與RDS資料庫例項MaxVcores量化對比來作為系統瓶頸的判斷依據?我們的理由是:

首先,RDS資料庫系統中,我們認為最為重要的資源是CPU資源,因為其他所有資源都需要CPU來排程。

其次,CPU的併發處理能力,與CPU Cores的數量相關。假設在相當小的一個時間切片上,CPU對活躍會話(AS)處理能力瓶頸就是CPU Cores數量。即:CPU最多同時能夠處理與Cores數量均等的活躍會話數。

因此,我們可以用RDS資料庫系統中,平均活躍會話(AAS)數與MaxVcores數的量化對比,做為判定系統是否存在瓶頸的重要依據。

Performance Insights能做什麼

阿里雲RDS Performance Insights能夠幫助我們的使用者快速方便、直接了當的發現資料庫例項負載,以及導致效能問題的SQL語句。目前Performance Insights頁面以三個方面承載我們的產品思路:

關鍵效能指標趨勢圖:關鍵資源利用率變化趨勢圖。

實時AAS變化趨勢圖:資料庫例項中平均活躍會話(Average Active Sessions)實時變化趨勢。
多維負載資訊:展示多維度例項負載資訊。
關鍵資源利用率趨勢圖

阿里雲RDS Performance Insights關鍵效能指標的趨勢圖,可以從宏觀的角度幫助客戶發現例項負載的來源,比如:到底是CPU資源吃緊,IOPS過高?還是網路開銷過大,又或是活躍連線數打滿?

資料庫例項效能調優利器:Performance Insights


實時AAS變化趨勢圖

從關鍵資源利用率趨勢圖部分,我們已經大致清楚了例項負載的來源。接下來,帶著這個問題,我們去看看目前例項中活躍會話的資源等待情況。那麼,此時我們可以來到頁面的第二個部分:實時AAS變化趨勢圖。


資料庫例項效能調優利器:Performance Insights


從Performance Insights中的實時AAS變化趨勢圖中,我們可以非常清晰的發現RDS例項中的資源等待情況。比如上圖,我們可以分析出以下重要資訊:

時間10:25 - 10:57之間,平均活躍會話遠遠大於例項CPU Cores數量24(幾個點低於CPU Cores),說明資料庫已經面臨比較大的系統瓶頸。
從AAS變化趨勢圖來看,幾乎是在等待藍色標示的資源,即CPU資源。

由此可見,我們使用Performance Insights中的實時AAS變化趨勢圖,可以非常清晰簡單,直接了當的找到使用者RDS例項負載來源,資源等待於何時、何處,以及變化規律。

多維度負載詳情

通Performance Insights中的實時AAS變化趨勢圖,掌握了例項負載來源,資源等待及變化規律,接下來使用者理所應當最關心的一個問題便是:到底導致這些例項負載的具體查詢語句是什麼?哪個使用者導致的?哪個連線主機客戶端?哪個應用資料庫?這一系列的問題我們可以使用多維負載資訊部分來解答。

資料庫例項效能調優利器:Performance Insights


從以上截圖的下半部分,我們可以方便的找出與AAS變化趨勢關聯的負載對應的SQL查詢語句,以及每個語句對AAS的貢獻的對比情況。當然,您也可以根據自己的需要切換為Waits,Users,Hosts,Commands,Databases和Status,分別表示資源等待,使用者,客戶端主機,命令型別,資料庫,程式狀態等維度檢視。

Performance Insights架構

瞭解阿里雲RDS Performance Insights能夠做什麼以後,讓我們來看Performance Insights的設計架構圖,簡要概括為五個字:四層兩鏈路。


資料庫例項效能調優利器:Performance Insights


四層架構

RDS Performance Insights四層架構從上往下,依次為:

應用層:前端使用者可見,承載著我們產品的思路和邏輯,是終端使用者可見的產品呈現。 
服務層:各系統API協調工作,為應用層提供應用資料服務,我們產品主要的業務邏輯處理層。 
資料層:資料實時處理平臺,統計彙總,資料扁平化,實時計算,最終持久化到後設資料庫中,為服務層提供資料。 
採集層:從RDS例項中,採集有價值的基礎資料,為資料層輸入資料。

兩條鏈路

從資料鏈路來看Performance Insights,有兩條鏈路:

訪問鏈路:資料至上而下請求訪問,至下而上的資料返回。 
採集鏈路:資料從生產到消費,從統計彙總到最終落庫整個生命過程。

典型案例

以下兩個典型案例,來看看Performance Insights如何一目瞭然,一針見血的幫助我們診斷分析資料庫系統瓶頸,資源等待和SQL查詢語句。

為什麼CPU 100%了 
XXX時間點SQL查詢變慢了

為什麼CPU 100%了?

在我們多年的專家服務過程中, 遇到最多的使用者問題便是“為什麼我的CPU 100%了”,來看看Performance Insights是如何庖丁解牛這個問題。

Performance Insights截圖

以下是該RDS例項,Performance Insights頁面截圖。


資料庫例項效能調優利器:Performance Insights


分析

我們從Performance Insights頁面截圖分析出以下幾個問題:

從資源利用率中CPU使用率和活躍會話數量來看:大概在 09:59 - 10:05,均有大幅上升。CPU使用率達到了100%,活躍會話(Active Sessions)達到了400+;

AAS變化趨勢中發現,這段時間內,系統瓶頸主要集中在CPU和Lock兩資源的等待,總的Active Sessions數遠遠超過CPU Cores(例項的CPU Cores為16),存在嚴重的系統瓶頸。

SQL語句詳情部分:非常清晰的看到排在第一位的SQL查詢語句是等待CPU資源,達到了96個活躍會話;第二位是Lock資源等待,達到了79個會話,可以點選SQL語句,檢視詳情。

XXX時間點SQL查詢變慢了

另外,使用者經常遇到的一個問題是“為什麼我的SQL查詢語句突然變慢了”?

Performance Insights截圖

某RDS例項使用者反饋在16:05左右,原本執行很快的Update語句,突然變得很慢,16:08左右恢復正常,以下是該RDS例項Performance Insights頁面截圖。


資料庫例項效能調優利器:Performance Insights


分析

從Performance Insights截圖,我們可以分析出:

從AAS變化趨勢圖中,發現大約從16:05:50秒開始,系統出現了大量等待Lock資源的活躍會話(圖中橙色顏色區域),達到了33個,遠超CPU Cores數。

從截圖最下部分SQL查詢中,發現等待Lock資源的SQL語句(第一條,橙色標示),恰巧是使用者抱怨變慢的Update操作語句。於是我們可以很快斷定,這個Update變慢的原因是資源被鎖住,導致等待鎖資源釋放時間過長,拉長了執行時間,即Update語句變慢了。
從AAS變化趨勢圖中,發現大約在16:07:20左右,等待鎖資源的活躍程式消失了,Update語句效能恢復正常,說明鎖資源已經釋放。

以上,我們從兩個特定的使用者案例可以看到Performance Insights可以簡單直觀,輕鬆愉悅的幫助使用者診斷問題,關聯分析系統瓶頸,資源等待和SQL查詢,取得了非常好的效果。

Performance Insights的未來

伴隨阿里雲RDS Performance Insights第一期釋出,我們已經可以幫助使用者快速發現RDS例項效能問題,以及導致效能問題的具體SQL查詢。但是,這遠遠不夠,我們還需要更深入的幫助我們的客戶自動化、智慧化解決問題。

從“是什麼”到“為什麼”

當前,使用者透過阿里雲RDS Performance Insights找到了導致效能問題的具體查詢SQL語句後,接下來很自然的一個問題是,為什麼這個查詢語句會導致效能問題?是缺失必要的索引?統計資訊資料傾斜?查詢資料型別轉換?Non-SARG查詢等等?接下來,我們需要深入探索為什麼SQL會導致效能問題。

從“為什麼”到“怎麼辦”

當使用者知道了SQL語句為什麼有效能問題以後,接下來的問題便是:我該怎麼做才能解決效能問題?我們需要明確告訴使用者怎麼辦就能夠解決效能問題。

從“怎麼辦”到“自動辦”

隨著使用者能夠解決SQL語句效能問題以後,使用者接下來最為迫切的需求便是:阿里雲能否幫我們預先發現、智慧化、自動化處理解決這些類似的問題?

以上,便是RDS Performance Insights的產品脈絡,從是什麼到為什麼;從為什麼到怎麼辦;從怎麼辦到自動辦,層層遞進,步步為營,一步一步創造客戶越來越高的診斷最佳化需求。

最後總結

阿里雲RDS Performance Insights是資料庫例項效能調優、負載監控、關聯分析的必備利器,它可以幫助使用者決策從何處下手,何時採取行動,採取何種行動以及智慧化自動解決問題根源。我們有能力有信心可以幫助我們的客戶更好的上好阿里雲,用好阿里雲。


**在雲棲
與技術大神不期而遇**


資料庫例項效能調優利器:Performance Insights


本文為雲棲社群原創內容,未經允許不得轉載。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69949601/viewspace-2659050/,如需轉載,請註明出處,否則將追究法律責任。

相關文章