本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
無限資料庫等待事件
下列等待事件適用於 Aurora PostgreSQL 無限制資料庫。您可以監控這些等待事件,以識別 Aurora PostgreSQL 無限制資料庫處理中的瓶頸。
IO:TwophaseFilePoolWrite 等待事件
等待在兩階段狀態檔案集區中寫入兩階段狀態檔案。這是 Aurora 特定事件。
原因
執行PREPARED TRANSACTION
命令的程序,包括無限資料庫分散式交易中的參與者,必須將交易狀態保留在兩階段檔案中。Aurora 使用檔案集區來改善此操作的效能。
動作
這是同步寫入 I/O 操作,因此在此事件中的高延遲具有與 相似的原因IO:XactSync
,並且可以以相同的方式進行調查。如果使用無限資料庫,您可能需要減少正在執行的分散式交易數量。
IO:TwophaseFilePoolRead 等待事件
等待讀取兩階段狀態檔案集區中的兩階段狀態檔案。
原因
針對先前預備的交易執行COMMIT PREPARED
命令的程序,包括無限資料庫分散式交易的參與者,可能需要從兩階段檔案讀取先前持續的交易狀態。Aurora 使用檔案集區來改善此操作的效能。
動作
這是讀取 I/O 操作。因此,此事件中的高延遲與 具有相似的原因IO:DataFileRead
,並且可以進行相同的調查。如果使用無限資料庫,您可能需要減少正在執行的分散式交易數量。
AuroraLimitless:Connect 等待事件
程序正在等待建立與叢集中另一個節點的連線。
原因
在程序與遠端節點之間建立連線,以執行查詢、分散式交易和執行 DDLs。
動作
減少叢集的同時連線數,或調整跨碎片查詢的使用。
AuroraLimitless:AsyncConnect 等待事件
此事件類似於 Connect
,但代表等待與一組節點建立平行連線的程序。
原因
平行連線建立最常在執行 DDL 陳述式時完成。
動作
減少 DDL 陳述式的數量,或在同一工作階段中合併多個 DDLs,以改善連線重複使用。
AuroraLimitless:RemoteStatementSetup 等待事件
程序正在等待遠端查詢執行設定,例如游標開啟、關閉或準備陳述式建立。
原因
此等待事件會隨著碎片資料表上的掃描次數增加,其中陳述式無法進行單一碎片最佳化。
動作
最佳化查詢,以減少掃描操作的數量或提高單一碎片最佳化的資格。
AuroraLimitless:RemoteDDLExecution 等待事件
程序正在等待遠端 DDL 命令完成。
原因
當您在資料庫碎片群組上發出 DDL 命令時,必須先將其分發至其他路由器和碎片節點,才能確認操作。某些 DDL 操作可能會長時間執行,因為資料必須適應結構描述變更。
動作
識別長時間執行的 DDL 命令,以便您可以將它們最佳化。
AuroraLimitless:RemoteStatementExecution 等待事件
程序正在等待遠端命令完成。
原因
SQL 命令正在遠端節點上執行。此事件會經常出現在內部通訊中,例如 auto_analyze
和 活動訊號檢查。
動作
Idenfify 使用 limitless_stat_statements 檢視的長期執行命令。在許多情況下,這是預期事件,特別是對於背景工作者或內部程序,不需要採取任何動作。
AuroraLimitless:FetchRemoteResults 等待事件
程序正在等待從遠端節點擷取資料列。
原因
從遠端資料表擷取大量資料列時,此等待事件可能會增加,例如碎片或參考資料表。
動作
使用 limitless_stat_statements
檢視識別未最佳化的SELECT
查詢。最佳化查詢以僅擷取必要的資料。您也可以調校 rds_aurora.limitless_maximum_adaptive_fetch_size
參數。
AuroraLimitless:AsyncGetInitialResponse 等待事件
在查詢執行中使用管道模式時,程序正在等待初始回應。
原因
對於具有單一碎片資料放置的查詢,這通常會在路由器進行碎片執行期間出現,並且是正常執行的預期部分。
動作
無需採取進一步動作。
AuroraLimitless:AsyncGetNextResponse 等待事件
在查詢執行中使用管道模式時,程序正在等待額外的回應。
原因
對於具有單一碎片資料放置的查詢,這通常會在路由器進行碎片執行期間出現,並且是正常執行的預期部分。
動作
無需採取進一步動作。
AuroraLimitless:AbortedCommandCleanup 等待事件
程序正在等待遠端清除查詢的結果。清除查詢會發給碎片節點,以在分散式交易結束時將其傳回適當的狀態。
原因
交易因為發現錯誤或使用者發出明確的 ABORT 命令或取消執行中的查詢而中止時,就會完成交易清除。
動作
調查取消交易的原因。
AuroraLimitless:DistributedCommitPrepare 等待事件
程序正在遞交分散式交易,並等待所有參與者確認準備命令。
原因
修改多個節點的交易必須執行分散式遞交。在 中等待很長的原因DistributedCommitPrepare
可能是在參與節點上的IO:TwophaseFilePoolWrite
事件中等待很長。
動作
減少修改多個節點上資料的交易數量。調查叢集其他節點中的IO:TwophaseFilePoolWrite
事件。
AuroraLimitless:DistributedCommit 等待事件
程序正在遞交分散式交易,並等待領導參與者確認遞交命令。
原因
修改多個節點的交易必須執行分散式遞交。長時間等待DistributedCommit
可能是由於潛在客戶參與者IO:XactSync
事件的長時間等待所造成。
動作
減少修改多個節點上資料的交易數量。調查叢集其他節點中的IO:XactSync
事件。
AuroraLimitless:DistributedCommitPrepareThrottle 等待事件
程序正在嘗試準備分散式交易,並且由於現有的預備交易而受到調節。
原因
修改多個節點的交易必須執行分散式遞交。這些交易的參與者必須執行準備操作,做為遞交通訊協定的一部分。Aurora 會限制並行準備的數量,如果超過此限制,程序將在DistributedCommitPrepareThrottle
事件中等待。
動作
減少修改多個節點上資料的交易數量。在這些IO:TwophaseFilePoolWrite
事件中因為時間增加而調查事件可能會導致現有的準備交易累積,進而導致新的準備嘗試進行限流。
AuroraLimitless:PreparedTransactionResolution 等待事件
程序遇到由處於預備狀態的分散式交易所修改的元組。程序必須判斷分散式交易是否會出現在其快照中。
原因
修改多個節點的交易必須執行包含準備階段的分散式遞交。大量分散式交易或增加分散式遞交的延遲可能會導致其他程序遇到PreparedTransactionResolution
等待事件。
動作
減少修改多個節點上資料的交易數量。調查分散式遞交相關事件,因為在這些事件中的時間增加,可能會增加分散式交易遞交路徑的延遲。您也可以調查網路和 CPU 負載。
AuroraLimitless:SendPreparedTransactionOutcome 等待事件
程序正在協調分散式交易的節點上執行,而另一個程序已查詢該交易的狀態,或該程序已遞交分散式交易並將結果傳送給參與者。
原因
遇到PreparedTransactionResolution
等待事件的程序將查詢交易協調器。交易協調器上的回應會遇到 SendPreparedTransactionOutcome。
動作
減少修改多個節點上資料的交易數量。調查分散式遞交相關事件IO:TwophaseFilePoolWrite
和 IO:TwophaseFilePoolRead
事件,因為這些事件可能會增加分散式交易遞交路徑的延遲。您也可以調查網路和 CPU 負載。
AuroraLimitless:CommitClockBarrier 等待事件
程序正在遞交交易,必須等待,以確保叢集中所有節點的指派遞交時間都保證為過去。
原因
CPU 或網路統計可能會導致時鐘偏離增加,導致在此等待事件中花費的時間。
動作
調查叢集中的 CPU 或網路飽和度。
AuroraLimitless:SnapshotClockBarrier 等待事件
程序已經收到來自另一個節點的快照時間,該節點未來有時鐘,並正在等待自己的時鐘到達該時間。
原因
這通常發生在程序從下推到碎片的函數收到結果,且節點之間存在時鐘偏離之後。CPU 或網路統計可能會導致時鐘偏離增加,導致在此等待事件中花費的時間。
動作
調查叢集中的 CPU 或網路統計資料。
AuroraLimitless:ReaderSnapshotClockBarrier 等待事件
此事件發生在讀取節點上。程序正在等待讀取節點重播寫入串流,以便套用程序快照時間之前發生的所有寫入。
原因
增加 Aurora 複本延遲可能會導致此事件的等待時間增加。
動作
調查 Aurora 複本延遲。
AuroraLimitless:GatherDistributedDeadlockGraph 等待事件
程序正在與其他節點通訊,以收集鎖定圖形作為分散式死鎖偵測的一部分。
原因
當程序等待鎖定時,會在等待超過 之後執行分散式死鎖檢查rds_aurora.limitless_distributed_deadlock_timeout
。
動作
調查應用程式中鎖定爭用的原因,並考慮調校 rds_aurora.limitless_distributed_deadlock_timeout
。
AuroraLimitless:DistributedDeadlockDetection 等待事件
程序正在與其他節點通訊,以偵測分散式死結。
原因
當程序等待鎖定時,會在等待超過 之後執行分散式死鎖檢查rds_aurora.limitless_distributed_deadlock_timeout
。
動作
調查應用程式中鎖定爭用的原因,並考慮調校 rds_aurora.limitless_distributed_deadlock_timeout
。
AuroraLimitless:DistributedDeadlockAbort 等待事件
程序正在與其他節點通訊,以中止選擇為分散式死結中受害者的工作階段。
原因
應用程式模式會產生分散式死結。
動作
調查導致分散式死結的應用程式模式。
AuroraLimitless:GatherRemoteStats 等待事件
程序正在從叢集中的其他節點收集統計資料。
原因
監控或活動查詢和檢視,例如 limitless_stat_activity
,將從其他節點擷取統計資料。
動作
無需採取進一步動作。
AuroraLimitless:GlobalSequenceRefresh 等待事件
程序正在產生新的序列值,必須向全域序列請求新的區塊。
原因
如果 rds_aurora.limitless_sequence_chunk_size
不足,產生高速率的序列值可能會導致在此事件中停滯。
動作
這是正常的發生。如果您在此事件中看到時間過長,請考慮調校 rds_aurora.limitless_sequence_chunk_size
。請參閱無限資料庫中序列的文件。
AuroraLimitless:GlobalVacuumTimeExchange 等待事件
程序正在交換快照資料以支援清空。
原因
無限資料庫中的節點與其他節點交換最舊的作用中快照時間資料,以計算清空執行的正確截止時間。
動作
無需採取進一步動作。
AuroraLimitless:DistributedTransactionMonitorGather 等待事件
程序是從其他節點收集交易中繼資料,以支援分散式交易清除。
原因
無限資料庫中的節點與其他節點交換交易中繼資料,以判斷何時可以清除分散式交易狀態。
動作
無需採取進一步動作。
AuroraLimitlessActivity:AdminTaskSchedulerMain 等待事件
在任務排程器程序的主迴圈中等待。
AuroraLimitlessActivity:AdminTaskExecutorMain 等待事件
在任務執行器程序的主迴圈中等待。
AuroraLimitlessActivity:AdminTaskMonitorMain 等待事件
在任務監控程序的主迴圈中等待。
AuroraLimitlessActivity:DatabaseCleanupMonitorMain 等待事件
在資料庫清除監控程序的主迴圈中等待。
AuroraLimitlessActivity:TopologyCleanupMonitorMain 等待事件
在拓撲清理監控程序的主迴圈中等待。
AuroraLimitlessActivity:ToplogyChangeMonitorMain 等待事件
在拓撲變更監控程序的主迴圈中等待。
AuroraLimitlessActivity:DistributedTransactionMonitorMain 等待事件
在分散式交易監控程序的主迴圈中等待。
AuroraLimitlessActivity:GlobalVacuumMonitorMain 等待事件
等待全域清空監控程序的主迴圈。