Hologres管控臺的監(jiān)控指標(biāo)
本文為您介紹Hologres各監(jiān)控指標(biāo)的含義。通過了解這些監(jiān)控指標(biāo),您可以根據(jù)業(yè)務(wù)需求選擇適合的指標(biāo),實時查看當(dāng)前實例的資源使用情況和SQL語句的執(zhí)行情況,及時識別系統(tǒng)報錯并處理實例異常。
注意事項
對QE和FixedQE的特別說明:
QE指的是HQE、SQE等Hologres自研向量計算引擎XQE的總稱,在慢Query日志中,Engine Type={XQE}的Query在監(jiān)控指標(biāo)中都屬于QE。
FixedQE是指走Fixed Plan鏈路的執(zhí)行引擎,在慢Query日志中,Engine Type={FixedQE}(V2.2版本以下均為SDK)的Query在監(jiān)控指標(biāo)中屬于FixedQE。
對Command Type的特別說明:
SQL是什么類型,就會歸屬為什么類型的Command Type,例如:SQL是
INSERT xxx
或者INSERT xxx ON CONFLICT DO UPDATE/NOTHING
,都會被識別為INSERT類型。UNKNOWN:為系統(tǒng)無法識別的SQL進行分類,無法識別的原因可能是SQL書寫錯誤導(dǎo)致引擎無法識別。
UTILITY:表示非SELECT、INSERT、DELETE或UPDATE類型的SQL,例如CREATE、DROP等。
在云監(jiān)控中,每個指標(biāo)會有一個唯一的metricid(云監(jiān)控指標(biāo)ID),以方便更直觀地映射到具體的監(jiān)控指標(biāo)。不同的實例類型,指標(biāo)ID會有不同的前綴,通用型實例、從實例、計算組實例、湖倉加速(共享集群)分別對應(yīng)
standard_
、follower_
、warehouse_
、shared_
。每種實例類型支持的指標(biāo)如下:通用型實例:通用型實例支持的指標(biāo)。
從實例:從實例支持的指標(biāo)。
計算組:計算組實例支持的指標(biāo)。
湖倉加速(共享集群):湖倉加速實例支持的指標(biāo)。
如果指標(biāo)中顯示暫無數(shù)據(jù),可能當(dāng)前實例版本暫不支持該指標(biāo),或者是長期沒有數(shù)據(jù)。
監(jiān)控數(shù)據(jù)最多保留30天。
訪問控制
當(dāng)前Hologres管理控制臺的監(jiān)控頁面來源于云監(jiān)控,如果您使用RAM用戶查看監(jiān)控信息,則需要根據(jù)業(yè)務(wù)情況為RAM用戶授予一定的操作權(quán)限,具體如下:
AliyunCloudMonitorFullAccess:管理云監(jiān)控的權(quán)限。
AliyunCloudMonitorReadOnlyAccess:只讀訪問云監(jiān)控的權(quán)限。
RAM用戶授權(quán)詳情請參見為RAM用戶授權(quán)。
監(jiān)控指標(biāo)一覽表
當(dāng)前Hologres提供的監(jiān)控指標(biāo)如下:
分類 | 指標(biāo) | 指標(biāo)描述 | 支持的實例類型 | 備注 |
CPU | 實例CPU的使用率。 | 通用型實例、從實例、計算組實例 | 無 | |
實例內(nèi)每個Worker的CPU使用率。 | ||||
Memory | 實例內(nèi)總的內(nèi)存使用率。 | 通用型實例、從實例、計算組實例 | 無 | |
實例內(nèi)每個Worker的內(nèi)存使用率。 | ||||
實例中內(nèi)存按照system、meta、cache、query及background分類的內(nèi)存使用率。 | 僅Hologres V2.0及以上版本支持。 | |||
使用QE執(zhí)行引擎的Query的內(nèi)存使用量。 | 僅Hologres V2.0.44及以上版本、V2.1.22及以上版本支持。 | |||
使用QE執(zhí)行引擎的Query的內(nèi)存使用率。 | ||||
Query QPS and RPS | 實例內(nèi)Query的總QPS。 | 通用型實例、從實例、計算組實例、共享集群實例 | Query QPS >= QE QPS + FixedQE QPS。 說明 總的QPS會采集所有的Query,包括UNKNOWN、UTILITY、Engine Type={PG}等的Query,因此總QPS會大于或等于QE+FixedQE QPS。 | |
實例內(nèi)使用QE引擎的Query的QPS。 | 通用型實例、從實例、計算組實例 | 僅Hologres V2.2及以上版本支持。 | ||
實例內(nèi)使用FixedQE(原名SDK)引擎的Query的QPS。 | ||||
實例內(nèi)DML Query的總RPS。 | 通用型實例、計算組實例 | DML RPS = QE RPS + FixedQE RPS | ||
實例內(nèi)使用QE引擎的DML的RPS。 | 僅Hologres V2.2及以上版本支持。 | |||
實例內(nèi)使用FixedQE引擎的DML的RPS。 | ||||
Query Latency | 實例內(nèi)Query的延遲。 | 通用型實例、從實例、計算組實例、共享集群實例 | 無 | |
實例內(nèi)使用QE引擎的Query的延遲。 | 通用型實例、從實例、計算組實例 | 僅Hologres V2.2及以上版本支持。 | ||
實例內(nèi)使用FixedQE引擎的Query的延遲。 | ||||
Query在Optimization階段的耗時。 | 通用型實例、從實例、計算組實例、共享集群實例 | 僅Hologres V2.0.44及以上版本、V2.1.22及以上版本支持。 | ||
Query在Start Query階段的耗時。 | ||||
Query在Get next階段的耗時。 | ||||
Query的P99延遲。 | 無 | |||
本實例正在運行的Query中,運行時間最長的Query的耗時。 | ||||
Failed Query QPS | 實例內(nèi)失敗Query的總QPS。 | 通用型實例、從實例、計算組實例、共享集群實例 | 失敗Query QPS >= QE失敗Query QPS + FixedQE失敗Query QPS。 說明 失敗Query QPS采集的是總的失敗Query,包括UNKNOWN、UTILITY、Engine Type={PG}等失敗的Query,因此總失敗QPS會大于或等于QE+FixedQE 失敗QPS。 | |
實例內(nèi)使用QE引擎的失敗Query的QPS。 | 通用型實例、從實例、計算組實例 | 僅Hologres V2.2及以上版本支持。 | ||
實例內(nèi)使用FixedQE引擎的失敗Query的QPS。 | 通用型實例、計算組實例 | |||
Locks | FE節(jié)點中的DDL鎖耗時。 | 通用型實例、從實例、計算組實例 | 僅Hologres V2.0.44及以上版本、V2.1.22及以上版本支持。 | |
FixedQE的鎖耗時,通常為HQE鎖。 | ||||
實例內(nèi)HQE鎖的延遲,包括FixedQE的HQE鎖延遲。 | ||||
Connection | 實例內(nèi)使用的總連接數(shù)。 | 通用型實例、從實例、計算組實例、共享集群實例 | 無 | |
實例內(nèi)每個DB使用的連接數(shù)。 | 通用型實例、從實例、計算組實例 | |||
實例內(nèi)每個FE使用的連接數(shù)。 | ||||
實例內(nèi)的連接數(shù)使用率,默認(rèn)用連接數(shù)使用率最高的FE。 | ||||
IO | 讀取標(biāo)準(zhǔn)存儲數(shù)據(jù)的I/O吞吐量。 | 通用型實例、從實例、計算組實例 | 無 | |
寫入標(biāo)準(zhǔn)存儲數(shù)據(jù)的I/O吞吐量。 | 通用型實例、計算組實例 | |||
讀取低頻存儲數(shù)據(jù)的I/O吞吐量。 | 通用型實例、從實例、計算組實例 | |||
寫入低頻存儲數(shù)據(jù)的I/O吞吐量。 | 通用型實例、計算組實例 | |||
Storage | 標(biāo)準(zhǔn)存儲已使用的存儲量。 | 通用型實例、計算組實例 | 無 | |
標(biāo)準(zhǔn)存儲量的使用率。 | ||||
低頻存儲已使用的存儲量。 | ||||
低頻存儲量的使用率。 | ||||
Frameworks | 每個FE的Replay延遲。 | 通用型實例、從實例、計算組實例 | 僅Hologres V2.2及以上版本支持。 | |
開啟Replication后的Shard多副本之間的延遲。 | 無 | |||
從實例讀取主實例數(shù)據(jù)時的延遲。僅從實例支持顯示。 | ||||
異地容災(zāi)實例之間的文件同步延遲。 | 通用型實例 | |||
Auto Analyze | 每個DB內(nèi)統(tǒng)計信息缺失的表個數(shù)。 | 通用型實例、計算組實例 | 僅Hologres V2.2及以上版本支持。 | |
Serverless Computing | 開啟Serverless Computing后,在Serverless Computing中運行時間最長的Query的時長。 | 通用型實例、計算組實例 | 僅Hologres V2.1及以上版本支持。 | |
Binlog | 每秒消費Binlog的條數(shù)。 | 通用型實例、從實例、計算組實例 | 僅Hologres V2.2及以上版本支持。 | |
每秒消費Binlog的字節(jié)數(shù)。 | ||||
每個FE的Walsender 的使用數(shù)。 | ||||
Walsender使用率最高的FE的Walsender使用率。 | ||||
Computing Resource | 實例分時彈性彈出的Core數(shù)。 | 計算組實例 | 僅Hologres V2.2.21及以上版本支持。 |
CPU
CPU相關(guān)的指標(biāo)如下。
實例CPU使用率(%)
實例CPU指實例整體的CPU使用率,代表實例的計算負載情況。
在沒有查詢的時候,后臺常駐進程或者異步執(zhí)行的Compaction都可能占用CPU,因此實例無查詢負載時,有少量CPU使用率是正常現(xiàn)象。
Hologres因其設(shè)計原理可以充分發(fā)揮多核并行計算的能力,通常來說單個查詢可以迅速將CPU使用率提高到100%,這說明計算資源得到了充分利用。
當(dāng)實例CPU使用率長期接近100%時(例如CPU使用率連續(xù)3小時滿載100%,或者連續(xù)12小時達到90%以上等),說明實例負載非常高,這通常意味著CPU資源成為了系統(tǒng)的瓶頸,需要分析具體的業(yè)務(wù)場景和查詢,以判斷原因。可以從以下幾方面判斷:
是否有比較大的離線數(shù)據(jù)導(dǎo)入(INSERT),且數(shù)據(jù)規(guī)模還在日漸增長。
是否有高QPS的查詢或?qū)懭?,共同占用了CPU的全部資源。
是否有上述或上述場景以外的混合負載。
如果確定是業(yè)務(wù)場景需要,將資源用滿,可以對實例進行擴容,以適應(yīng)更復(fù)雜的查詢或更大的數(shù)據(jù)量。
Worker節(jié)點CPU使用率(%)
Worker節(jié)點CPU指實例內(nèi)每個Worker的CPU使用率,代表每個Worker的計算負載情況。Hologres根據(jù)實例規(guī)格,提供不同的Worker節(jié)點數(shù),詳情見實例規(guī)格概述。
當(dāng)前指標(biāo)只有Hologres V1.1及以上版本支持顯示。
當(dāng)實例內(nèi)所有Worker節(jié)點CPU使用率都長期接近100%時,說明實例的負載非常高,需要根據(jù)業(yè)務(wù)情況合理地優(yōu)化資源使用或者擴容。
當(dāng)實例只有部分Worker節(jié)點的CPU水位比較高,部分Worker節(jié)點的CPU水位較低時,說明Worker資源有傾斜,常見傾斜原因以及排查方法請參見監(jiān)控指標(biāo)常見問題。
Memory
內(nèi)存相關(guān)的指標(biāo)如下。
實例內(nèi)存使用率(%)
實例內(nèi)存使用率代表實例整體的內(nèi)存綜合使用率。
Hologres的內(nèi)存資源采用預(yù)留模式,在沒有查詢的時候,也會有數(shù)據(jù)表的元數(shù)據(jù)、索引、數(shù)據(jù)緩存等加載到內(nèi)存中,以便加快檢索和計算,此時內(nèi)存使用率不為零是正常情況。理論上,在無查詢的情況,內(nèi)存使用率達到30%~40%左右都屬于正常情況。
當(dāng)內(nèi)存使用率穩(wěn)定增長,長期接近80%時,通常意味著內(nèi)存資源可能成為了系統(tǒng)的瓶頸,可能會影響實例的穩(wěn)定性或性能。
可以根據(jù)實例內(nèi)存分布使用率,并結(jié)合業(yè)務(wù)的QPS等指標(biāo)綜合判斷誰占用了較高的內(nèi)存,從而做相應(yīng)的優(yōu)化。詳情可以參見OOM常見問題排查指南。
Worker節(jié)點內(nèi)存使用率(%)
Worker節(jié)點內(nèi)存使用率指實例內(nèi)每個Worker的內(nèi)存使用率,代表每個內(nèi)存的計算負載情況。Hologres根據(jù)實例規(guī)格,提供不同的Worker節(jié)點數(shù),詳情見實例規(guī)格概述。
當(dāng)前指標(biāo)僅Hologres V1.1及以上版本支持顯示。
當(dāng)實例內(nèi)所有Worker節(jié)點的內(nèi)存水位都長期接近80%時,說明實例的負載非常高,需要根據(jù)業(yè)務(wù)情況合理地優(yōu)化資源或者擴容。
當(dāng)實例只有部分Worker節(jié)點內(nèi)存水位比較高,部分Worker節(jié)點內(nèi)存水位較低時,說明Worker資源有傾斜,常見傾斜原因以及排查方法請參見監(jiān)控指標(biāo)常見問題。
實例中內(nèi)存的詳細使用率(%)
在Hologres中,內(nèi)存會分為系統(tǒng)(system)、元數(shù)據(jù)(meta)、緩存(cache)、計算(query)、后端進程(background)等幾個部分。從V2.0.15版本開始,支持實例內(nèi)存分布使用率的監(jiān)控指標(biāo),可以通過該指標(biāo)查看內(nèi)存的分布情況,從而進行針對性優(yōu)化。主要包括以下指標(biāo):
System:系統(tǒng)內(nèi)存,指系統(tǒng)組件運行時占用的內(nèi)存,組件包括Holohub、Gateway、FE(Frontend)等,其中FE會包括FE Master和FE Query,因此System內(nèi)存也會隨著Query的運行而波動。
Cache:緩存占用的內(nèi)存,緩存的內(nèi)存主要包括:
SQL相關(guān)的緩存:例如result cache、block cache等,與SQL有關(guān),根據(jù)Query運行狀態(tài)動態(tài)變化。如果SQL有命中緩存(例如通過explain analyze查看Physical read bytes字段,數(shù)據(jù)越小說明緩存命中率越高),將會提升查詢性能。但SQL的緩存也有一定的上限。
Meta緩存:包括表的Schema Meta、文件Meta等,為了Query的高效執(zhí)行,Hologres的存儲引擎會預(yù)先將Meta相關(guān)的數(shù)據(jù)加載進緩存中,從而減少Meta的冷訪問,提升查詢性能。
緩存有固定大小,一般占用實例總內(nèi)存的30%左右。當(dāng)實例沒有查詢負載時,也會存在一定的緩存占用,主要是Meta占用的緩存。
Meta:元數(shù)據(jù)、文件等占用的內(nèi)存,元數(shù)據(jù)的內(nèi)存使用采用Lazy Open模式,即頻繁被訪問的元數(shù)據(jù)會常駐內(nèi)存中,未被訪問的元數(shù)據(jù)則不會放在內(nèi)存中,以此來減少元數(shù)據(jù)對內(nèi)存的占用。一般建議Meta占用的內(nèi)存維持在總內(nèi)存的30%以內(nèi)。如果Meta占用的內(nèi)存較高,說明實例中訪問的文件數(shù)較多,或者分區(qū)表較多,可以通過表統(tǒng)計信息查看與分析對實例中的表做相關(guān)治理。
Query:代表執(zhí)行SQL時消耗的內(nèi)存,與Query的復(fù)雜度、并發(fā)度等正相關(guān)。主要包括Fixed Plan、HQE、SQE等執(zhí)行SQL消耗的內(nèi)存。
Query計算的內(nèi)存會采用彈性機制,即單個Worker最低使用20 GB,最高使用根據(jù)實例的總空閑內(nèi)存浮動,其他分類中內(nèi)存占用越多,會導(dǎo)致計算部分彈性的內(nèi)存越少。
如果Query占用的內(nèi)存較多,甚至出現(xiàn)了OOM的現(xiàn)象,說明Query較復(fù)雜或者并發(fā)度較高,建議對Query調(diào)優(yōu)或者對實例擴容,以避免實例高水位運行,詳情請參見優(yōu)化查詢性能。
Background:后臺任務(wù)占用的內(nèi)存,包括Compaction、Flush等任務(wù),一般Background消耗的內(nèi)存較少,約在5%以內(nèi)。但如果對表修改了索引、執(zhí)行了大量的寫入或更新等操作,Background的內(nèi)存占用將會上升,并隨任務(wù)的結(jié)束而下降。
Memtable:內(nèi)存表占用的內(nèi)存,在Hologres中Memtable(內(nèi)存表)主要用于存儲有實時寫入、更新、刪除等操作完成之后的表數(shù)據(jù)。一般Memtable的內(nèi)存占用在5%以內(nèi)。
QE Query內(nèi)存使用量(byte)
指實例中使用了HQE、SQE等Hologres自研引擎XQE的Query,在運行過程中的內(nèi)存使用量。
該指標(biāo)僅Hologres V2.0.44及以上版本、V2.1.22及以上版本支持顯示。
在內(nèi)存細分類中,Query的內(nèi)存使用量大于QE Query內(nèi)存使用量。
通過QE Query內(nèi)存使用量可知該實例中運行的Query復(fù)雜度,如果內(nèi)存使用量較多,說明Query比較復(fù)雜,使用的內(nèi)存較多。
QE Query內(nèi)存使用率(%)
QE Query內(nèi)存使用率可以判斷當(dāng)前實例的負載情況,如果QE內(nèi)存使用率較高,可能因內(nèi)存不足而導(dǎo)致OOM,需要治理Query或者擴容。
該指標(biāo)僅Hologres V2.0.44及以上版本、V2.1.22及以上版本支持顯示。
Query QPS and RPS
Query QPS(countS)
Query QPS代表實例中平均每秒SQL語句的執(zhí)行次數(shù),為實例內(nèi)總的QPS。包括SELECT、INSERT、UPDATE和DELETE、UTILITY、UNKNOWN等SQL語句。Query QPS >= QE Query + FixedQE Query QPS
。
QE Query QPS(countS)
指實例內(nèi)使用QE引擎的Query每秒執(zhí)行的次數(shù)。包括SELECT、INSERT、UPDATE和DELETE四種類型的SQL語句。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
FixedQE Query QPS(countS)
指實例內(nèi)使用FixedQE引擎的Query每秒執(zhí)行的次數(shù)(走Fixed Plan鏈路,原名SDK)。包括SELECT、INSERT、UPDATE和DELETE四種類型的SQL語句。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
DML RPS(countS)
DML RPS代表實例內(nèi)Query每秒導(dǎo)入或者更新的數(shù)據(jù)記錄條數(shù),包括INSERT、UPDATE和DELETE三種類型的SQL語句,因此DML RPS = QE DML RPS + FixedQE DML RPS
。
QE DML RPS(countS)
指實例內(nèi)使用QE引擎的Query每秒導(dǎo)入或者更新的數(shù)據(jù)記錄條數(shù),包括INSERT、UPDATE和DELETE三種類型的SQL語句。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
使用QE引擎導(dǎo)入或更新數(shù)據(jù)的常見場景如下:
MaxCompute或OSS外部表的批量導(dǎo)入或更新。
Copy批量寫入或更新。
Hologres表之間的批量導(dǎo)入。
FixedQE DML RPS(countS)
指實例內(nèi)使用FixedQE引擎的Query每秒導(dǎo)入或者更新的數(shù)據(jù)記錄條數(shù)(原指標(biāo)名為SDK),包括INSERT、UPDATE和DELETE三種類型的SQL語句。其中:
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
常見的FixedQE場景包括:
通過數(shù)據(jù)集成DataX離線寫入。
SQL或JDBC通過
INSERT INTO VALUES()
語句寫入。
Query Latency
Query延遲(milliseconds)
實例內(nèi)運行的所有Query的平均延遲,包括SELECT、INSERT、UPDATE和DELETE、UTILITY、UNKNOWN等SQL語句。Query延遲 >= MAX(QE Query延遲,F(xiàn)ixedQE Query延遲)
。
QE Query延遲(milliseconds)
實例內(nèi)使用QE引擎的Query的平均延遲,包括SELECT、INSERT、UPDATE和DELETE四種類型的Query。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
對于QE Query的延遲增加排查,可以結(jié)合Optimization耗時、Start Query耗時、Get next耗時、QE QPS等指標(biāo)一起排查。
FixedQE Query延遲(milliseconds)
實例內(nèi)使用FixedQE引擎的Query的平均延遲,包括SELECT、INSERT、UPDATE和DELETE四種類型的Query。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
FixedQE Query延遲高可能是如下原因:
偶發(fā)變高:可能是因為存在HQE鎖,可以查看FixedQE的后端拿鎖耗時是否增加,若增加說明有鎖,可以通過Query洞察排查具體的拿鎖Query。
一直延遲高:可能是因為建表不合理,或著受其他復(fù)雜Query的影響等,可以參考Blink和Flink常見問題及診斷進行排查。
Optimization階段的耗時(milliseconds)
實例內(nèi)Query在Optimization階段的耗時,該階段主要用于優(yōu)化器QO解析SQL,并生成對應(yīng)的物理Plan以便執(zhí)行引擎跟進Plan去執(zhí)行。
該指標(biāo)僅Hologres V2.0.44及以上版本、V2.1.22及以上版本支持顯示。
如果Optimization階段耗時較長,說明實例中Query較復(fù)雜,導(dǎo)致解析Query耗費較多時間。如果實例中的Query只是傳入的參數(shù)不同,建議使用Prepared Statement模式降低QO耗時,詳情請參見JDBC。
Start Query階段的耗時(milliseconds)
實例內(nèi)Query在Start Query階段的耗時,該階段為真正開始執(zhí)行Query前的初始化階段,包括了加鎖,對齊Schema版本等過程。
該指標(biāo)僅Hologres V2.0.44及以上版本、V2.1.22及以上版本支持顯示。
如果Start Query階段耗時較長,通常是由于等待鎖或者高CPU占用導(dǎo)致資源等待,可以結(jié)合執(zhí)行計劃等細致分析。
Get next階段的耗時(milliseconds)
Get next是指從Start Query階段結(jié)束開始計算,到所有結(jié)果均返回所花費的時間,包括計算、返回結(jié)果等步驟的耗時。
該指標(biāo)僅Hologres V2.0.44及以上版本、V2.1.22及以上版本支持顯示。
如果Get next階段耗時較長,通常是由于計算復(fù)雜導(dǎo)致,可以結(jié)合QE內(nèi)存使用、QE QPS等指標(biāo)一起排查。如無明顯異常,也可能是客戶端在等待返回數(shù)據(jù)。
Query P99延遲(milliseconds)
實例內(nèi)運行的所有Query的P99延遲,包括SELECT、INSERT、UPDATE和UTILITY、以及系統(tǒng)Query等。
本實例正在運行中Query最長的時長(milliseconds)
指實例中正在運行的Query持續(xù)時長,默認(rèn)匯報當(dāng)前時刻運行時間最長的Query時長,包括SELECT、INSERT、UPDATE和DELETE、UTILITY、UNKNOWN等SQL語句。
該指標(biāo)僅Hologres V1.1及以上版本支持顯示。
Hologres是分布式系統(tǒng),根據(jù)實例的規(guī)格會有不同的Worker節(jié)點。Query運行時會在不同的Worker節(jié)點隨機分發(fā)。正在運行的Query持續(xù)時長會根據(jù)每個Worker節(jié)點上Query運行時長,匯報當(dāng)前時刻運行時間最長的Query,例如當(dāng)前時刻不同的Worker節(jié)點分別在運行持續(xù)時長為10分鐘、5分鐘和30秒的Query,此時正在運行的Query持續(xù)時長將會顯示為10分鐘。
可以根據(jù)Query的運行時長,并結(jié)合活躍Query或者慢Query日志判斷Query運行時長是否合理,排查并解決Query運行時間較長的問題,及早處理死鎖、卡住等情況。
監(jiān)控指標(biāo)每隔1分鐘匯報一次,因此指標(biāo)中“正在運行的持續(xù)時長” x軸開始時間與Query真正開始的時間有誤差,該指標(biāo)僅作為異常情況問題排查的輔助指標(biāo),即通過該指標(biāo)快速定位到實例有運行時長較長的Query,作為自運維的輔助指標(biāo),不提供精確Query運行時間。
Failed Query QPS
失敗Query QPS(milliseconds)
失敗Query數(shù)代表實例內(nèi)平均每秒SQL語句失敗的次數(shù),包括SELECT、INSERT、UPDATE和DELETE、UTILITY、UNKNOWN等SQL語句。失敗Query QPS >= QE 失敗Query QPS + FixedQE 失敗Query RPS
。
可以根據(jù)失敗的Query類型和次數(shù),在慢Query日志中查找失敗的Query并分析原因,以提高系統(tǒng)的可用性。
QE失敗Query QPS(milliseconds)
指實例內(nèi)使用QE引擎的Query每秒失敗的次數(shù)。包括SELECT、INSERT、UPDATE和DELETE四種SQL語句。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
FixedQE失敗Query QPS(milliseconds)
指實例內(nèi)使用FixedQE引擎的Query每秒失敗的次數(shù)。包括SELECT、INSERT、UPDATE和DELETE四種SQL語句。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
Locks
FE等鎖的最大耗時(milliseconds)
Hologres是分布式系統(tǒng),會有多個FE節(jié)點負責(zé)SQL的解析、分發(fā)及路由。當(dāng)不同的連接請求被路由到同一個FE節(jié)點,并對同一個表做DDL操作(如CREATE、DROP)時,會產(chǎn)生FE鎖。FE等鎖耗時反映了每個FE等待DDL鎖的耗時。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
一般來說,只要執(zhí)行DDL操作就可能會產(chǎn)生鎖耗時,F(xiàn)E鎖耗時超過5分鐘,同時“FE replay延遲”指標(biāo)也出現(xiàn)較高的延遲,可能是因為有DDL執(zhí)行卡住了,通過Query管理排查運行時間較長的Query并及時終止該進程。
FixedQE的后端拿鎖耗時(milliseconds)
對于INSERT、DELETE或UPDATE等類型,走HQE鏈路的Query會使用表鎖,走FixedPlan鏈路的Query會使用行鎖。FixedQE的后端拿鎖表示走FixedPlan鏈路的Query涉及到的表被加了行鎖,同時走HQE鏈路的Query對該表加了表鎖,導(dǎo)致FixedPlan的Query需要等鎖,進而導(dǎo)致FixedQE拿鎖耗時增加。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
如果FixedQE的拿鎖耗時較長,可以通過慢Query日志定位到比較慢的FixedQE Query,然后通過Query洞察排查拿鎖的HQE Query。
實例總的后端拿鎖耗時(milliseconds)
表示INSERT、DELETE或UPDATE類型的Query在實例中總的拿鎖耗時,包括FixedQE的拿鎖耗時和HQE Query之間的拿鎖耗時。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
如果拿鎖耗時較長,可以通過慢Query日志定位到比較慢的INSERT、DELETE或UPDATE類型的Query,再通過Query洞察排查拿鎖的HQE Query。
Connection
總連接數(shù)(個)
Hologres根據(jù)實例的規(guī)格,設(shè)置不同的默認(rèn)總連接數(shù),詳情請參見實例規(guī)格概述。總連接數(shù)代表實例當(dāng)前已經(jīng)使用的連接總個數(shù),包括active(活躍)、idle(空閑)、idle in transaction(已失敗事務(wù)中的空閑狀態(tài))等連接狀態(tài)??梢酝ㄟ^Query管理查看當(dāng)前的連接使用情況,當(dāng)出現(xiàn)連接不足時,及時kill空閑連接。
連接數(shù)(按DB展開)(個)
按照DB匯總的連接數(shù)使用個數(shù),判斷每個DB的連接使用情況。其中:
每個DB的總連接數(shù)上限默認(rèn)是128,詳情請參見實例規(guī)格概述。
當(dāng)每個DB的連接數(shù)長期接近最大值時,說明實例的連接數(shù)使用較多,可以根據(jù)業(yè)務(wù)情況查看是空閑連接還是業(yè)務(wù)連接,詳情請參見連接數(shù)管理,并根據(jù)業(yè)務(wù)情況及時清理空閑連接或者擴容獲取更多的連接。
當(dāng)部分Worker節(jié)點連接數(shù)較高,部分Worker節(jié)點的連接數(shù)較低時,說明實例的連接負載不均,通過連接數(shù)管理查看空閑連接并及時清理,以緩解連接負載不均的情況。
連接數(shù)(按FE展開)(個)
按照FE匯總的連接數(shù)使用個數(shù),判斷每個FE的連接使用情況。其中:
每個FE節(jié)點的總連接數(shù)上限默認(rèn)是128,詳情請參見實例規(guī)格概述。
當(dāng)每個FE節(jié)點的連接數(shù)長期接近最大值時,說明實例的連接數(shù)使用較多,可以根據(jù)業(yè)務(wù)情況查看是空閑連接還是業(yè)務(wù)連接,詳情請參見連接數(shù)管理,并根據(jù)業(yè)務(wù)情況及時清理空閑連接或者擴容獲取更多的連接。
當(dāng)部分Worker節(jié)點連接數(shù)較高,部分Worker節(jié)點的連接數(shù)較低時,說明實例的連接負載不均,通過連接數(shù)管理查看空閑連接并及時清理,以緩解連接負載不均的情況。
連接數(shù)使用率最高的FE的連接數(shù)使用率(%)
代表使用率最高的FE(Frontend)節(jié)點的使用率,匯報每個FE節(jié)點的最大值,即Max(frontend_connection_used_rate)
,可以更加方便的知道使用的連接數(shù)是否即將超過某個Frontend節(jié)點的最大連接數(shù),造成無法連接的情況。多個FE節(jié)點之間采用輪訓(xùn)策略(Round Robin),新建連接依次與不同F(xiàn)rontend節(jié)點建立物理連接。可以通過Query管理查看當(dāng)前的連接使用情況,當(dāng)出現(xiàn)連接不足時,及時kill空閑連接。
IO
I/O吞吐代表實例的I/O吞吐量,描述實例的讀寫數(shù)據(jù)量,反映實例訪問磁盤時讀寫的繁忙度。您可以從I/O層面了解實例的壓力情況和負載變化,及時診斷問題。其中1 GiB=1024 MiB=1024 * 1024 KiB
。
標(biāo)準(zhǔn)IO讀吞吐(byte/s)
代表Query讀取標(biāo)準(zhǔn)存儲數(shù)據(jù)時的I/O吞吐。
標(biāo)準(zhǔn)IO寫吞吐(byte/s)
代表Query寫入標(biāo)準(zhǔn)存儲數(shù)據(jù)時的I/O吞吐。
低頻IO讀吞吐(byte/s)
代表Query讀取低頻存儲數(shù)據(jù)時的I/O吞吐。
低頻IO寫吞吐(byte/s)
代表Query寫入低頻存儲數(shù)據(jù)時的I/O吞吐
Storage
實例存儲的數(shù)據(jù)占用的邏輯磁盤大小,是所有DB存儲用量的總和。其中1 GiB=1024 MiB=1024*1024 KiB。Hologres存儲用量可以持續(xù)增加,沒有硬限制。
包年包月付費模式下購買的實例存儲用量用完后,超出部分會自動轉(zhuǎn)為按量計費,不會影響系統(tǒng)穩(wěn)定性與使用
建議超出存儲資源之后及時對存儲進行升級配置,或者及時清理無用的數(shù)據(jù),避免造成不必要的更昂貴的存儲費用。節(jié)省的存儲資費,可以用來投入到計算資源當(dāng)中。
可以通過pg_relation_size函數(shù)查看表和DB的存儲大小,以及存儲明細。同時也可以使用Table Info對實例中的表進行精細化管理。
標(biāo)準(zhǔn)存儲已用容量(byte)
標(biāo)準(zhǔn)存儲已經(jīng)使用的存儲容量,若超過購買的存儲容量,可以適當(dāng)擴容存儲。
標(biāo)準(zhǔn)存儲使用率(%)
標(biāo)準(zhǔn)存儲已經(jīng)使用的存儲使用率,若超過購買的存儲容量,可以適當(dāng)擴容存儲。
低頻存儲已用容量(byte)
低頻存儲已經(jīng)使用的存儲容量,若超過購買的存儲容量,可以適當(dāng)擴容存儲。
低頻存儲使用率(%)
低頻存儲已經(jīng)使用的存儲使用率,若超過購買的存儲容量,可以適當(dāng)擴容存儲。
Framework
FE replay延遲(milliseconds)
Hologres為分布式系統(tǒng),在接入層有多個Frontend(FE)負責(zé)SQL的解析、分發(fā)、路由。對于DDL,Hologres的原理是先在一個FE執(zhí)行,然后其余FE節(jié)點replay。其中:
FE replay需要一定的時間,一般來說,Relay延遲在毫秒級、秒級都為正常情況。
當(dāng)某個FE replay的延遲超過分鐘級時,可能是由于DDL太多,replay不及時;若是延遲一直增加,可能是Query卡住了,可以通過hg_stat_activity排查耗時較高的Query,并及時Kill。
該指標(biāo)僅Hologres V2.2及以上版本支持。
Shard多副本同步延遲(milliseconds)
Shard多副本延遲是指實例開了Replication后,主從Shard之間的副本數(shù)據(jù)同步延遲。
通常Shard多副本延遲為毫秒級。
當(dāng)有大量數(shù)據(jù)寫入、更新或頻繁執(zhí)行DDL操作時,可能會導(dǎo)致同步延遲。
主從同步延遲(milliseconds)
主從實例同步延遲表示從實例讀取主實例數(shù)據(jù)時的延遲(毫秒),其中:
僅從實例顯示該指標(biāo),主實例默認(rèn)不顯示。
只有在從實例綁定了主實例之后,該指標(biāo)才會顯示數(shù)據(jù)(0ms),當(dāng)主實例有數(shù)據(jù)寫入時,從實例的同步延遲會出現(xiàn)數(shù)據(jù)波動。
通常情況下,主從實例的同步延遲為毫秒級,當(dāng)實例偶爾出現(xiàn)延遲抖動時,可能原因為主實例在做DDL等元數(shù)據(jù)修改的操作,可忽略。若長期延遲較大(大于秒),可能原因為實例水位較高,資源不足,您可以結(jié)合CPU、內(nèi)存等水位情況綜合評估,并適當(dāng)擴容以減少延遲。
實例重啟或者升級期間,同步延遲可能增加到分鐘級別,并會自動恢復(fù)。
實例間文件同步延遲(milliseconds)
指異地容災(zāi)實例間的文件同步延遲,僅在Follower實例(只讀從實例)上展示該指標(biāo)。
Auto Analyze
每個DB統(tǒng)計信息缺失的表個數(shù)(countS)
代表每個DB中,統(tǒng)計信息缺失的表的個數(shù)。
該指標(biāo)僅Hologres V2.2及以上版本支持顯示。
對于Hologres V2.0及以上版本的實例,會默認(rèn)開啟新版本Auto Analyze機制,當(dāng)表剛創(chuàng)建或者有大量數(shù)據(jù)寫入或更新時,Auto Analyze可能未及時更新統(tǒng)計信息,可以先暫時觀測一段時間。
如果某個DB長期(超過數(shù)小時或數(shù)天)有缺失統(tǒng)計信息的表,可能是因為未到達Auto Analyze的閾值,可以通過HG_STATS_MISSING視圖查看哪些表缺失統(tǒng)計信息,并對表手動執(zhí)行Analyze以更新統(tǒng)計信息。
如果某個DB長期(超過數(shù)小時或數(shù)天)有缺失統(tǒng)計信息的表,可能是因為未達到Auto Analyze的閾值,可以查看表的統(tǒng)計信息,并手動對表執(zhí)行Analyze。詳情請參見ANALYZE和AUTO ANALYZE。
Serverless Computing
正在運行的Serverless Computing的查詢中,最長的時長(milliseconds)
Hologres支持Serverless Computing,可以將指定的Query運行在Serverless Computing資源池中,隔離本實例以及任務(wù),確保Query快速運行。
該指標(biāo)僅Hologres V2.1及以上版本支持顯示。
該指標(biāo)反映了Query在Serverless Computing的運行時長,默認(rèn)展示運行時間最長的Query的時長,同時結(jié)合hg_stat_activity定位Query在Serverless的運行情況。
Binlog
每秒消費Binlog的條數(shù)或字節(jié)數(shù)
Hologres支持訂閱Hologres Binlog功能,通過Binlog可以實現(xiàn)數(shù)據(jù)的實時分層,加速數(shù)據(jù)流轉(zhuǎn)。
每秒消費Binlog的條數(shù)(countS)
指每秒鐘消費Binlog的條數(shù)。該指標(biāo)僅在Hologres V2.2及以上版本支持顯示。
每秒消費Binlog的字節(jié)數(shù)(byte/s)
指每秒鐘消費Binlog的字節(jié)數(shù)。字節(jié)數(shù)的增加可能是由于存在較大的字段或數(shù)據(jù)量增加所致。該指標(biāo)僅在Hologres V2.2及以上版本支持顯示。
wal sender的使用數(shù)和使用率
同普通連接類似,在使用JDBC進行Binlog的消費時,所消費的每張表的每個Shard都會使用1個Walsender連接,Walsender連接與普通連接獨立,互不影響。Walsenders數(shù)有默認(rèn)上限。
每個FE的wal sender的使用數(shù)(個)
指每個FE節(jié)點使用的Walsender數(shù)。
wal sender使用率最高的FE的wal sender使用率(%)
指使用Walsender數(shù)最大的FE的使用率。
結(jié)合上述兩個指標(biāo),可以判斷當(dāng)前實例中Walsender的使用情況,若Walsender到達上限,可以通過JDBC消費Hologres Binlog排查并處理。
Computing Resource
Warehouse_timed_elastic_cores(Count)
Hologres計算組實例支持分時彈性功能,詳情請參見計算組分時彈性(Beta)。該指標(biāo)表示實例通過分時彈性彈出的Core數(shù)。
常見監(jiān)控指標(biāo)問題
監(jiān)控指標(biāo)常見問題匯總了使用監(jiān)控指標(biāo)中的常見問題,可以幫助業(yè)務(wù)快速診斷、定位問題,并提供對應(yīng)的解決辦法,提升自運維能力。
監(jiān)控指標(biāo)告警
您可以通過云監(jiān)控對監(jiān)控指標(biāo)設(shè)置告警,以便及時發(fā)現(xiàn)異常,并排查處理,降低業(yè)務(wù)影響。詳情請參見云監(jiān)控。