客戶端:ClientRead - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

客戶端:ClientRead

Client:ClientRead 事件表示 RDS for PostgreSQL 正在等待從用戶端接收資料。

支援的引擎版本

RDS for PostgreSQL 第 10 版及更新版本支援此等待事件資訊。

Context

RDS for PostgreSQL 資料庫執行個體正在等待從用戶端接收資料。RDS for PostgreSQL 資料庫執行個體必須先從用戶端接收資料,才能將更多資料傳送至用戶端。執行個體從用戶端接收資料之前等待的時間是 Client:ClientRead 事件。

等待時間增加的可能原因

Client:ClientRead 事件出現在最常等待名單中的常見原因包括:

網路延遲較久

RDS for PostgreSQL 資料庫執行個體與用戶端之間的網路延遲可能變長。網路延遲較久會導致資料庫執行個體需要更多時間從用戶端接收資料。

用戶端的負載增加

用戶端可能面臨 CPU 壓力或網路飽和。用戶端的負載增加可能延遲將資料從用戶端傳輸至 RDS for PostgreSQL 資料庫執行個體。

網路往返太頻繁

如果 RDS for PostgreSQL 資料庫執行個體與用戶端之間網路往返太頻繁,可能會延遲將資料從用戶端傳輸至 RDS for PostgreSQL 資料庫執行個體。

複製操作龐大

在複製操作期間,資料從用戶端的檔案系統傳輸至 RDS for PostgreSQL 資料庫執行個體。如果將大量資料傳送至資料庫執行個體,可能會延遲將資料從用戶端傳輸至資料庫執行個體。

閒置用戶端連線

當用戶端連線至 idle in transaction 狀態的 RDS for PostgreSQL 資料庫執行個體時,資料庫執行個體可能會等待用戶端傳送更多資料或發出命令。處於此狀態的連線可能導致 Client:ClientRead 事件增加。

PgBouncer 用於連接池

PgBouncer 具有名為的低階網路組態設定pkt_buf,預設設定為 4,096。如果工作負載透過傳送大於 4,096 位元組的查詢封包 PgBouncer,建議將pkt_buf設定增加到 8,192。如果新的設定未能減少 Client:ClientRead 事件,建議將 pkt_buf 設定增加為更大的值,例如 16,384 或 32,768。如果查詢文字很大,則較大的設定可能特別有用。

動作

根據等待事件的原因,我們會建議不同的動作。

將用戶端放在與執行個體相同的可用區域和 VPC 子網路中

若要縮短網路延遲並增加網路輸送量,請將用戶端放在與 RDS for PostgreSQL 資料庫執行個體相同的可用區域和虛擬私有雲端 (VPC) 子網路中。確保用戶端的地理位置盡可能靠近資料庫執行個體。

擴展用戶端

使用 Amazon CloudWatch 或其他主機指標,判斷您的用戶端目前是否受到 CPU 或網路頻寬的限制,或兩者都受到限制。如果用戶端受到限制,請相應地擴展用戶端。

使用最新一代的執行個體

在某些情況下,您使用的資料庫執行個體類別可能不支援 Jumbo Frame。如果您在 Amazon EC2 上執行應用程式,請考慮為用戶端使用最新一代的執行個體。此外,在用戶端作業系統上設定最大傳輸單位 (MTU)。此技術可以減少網路往返次數並增加網路輸送量。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的巨型框架 (9001 MTU)

如需資料庫執行個體類別的相關資訊,請參閱 數據庫實例類。若要決定等同於 Amazon EC2 執行個體類型的資料庫執行個體類別,請在 Amazon EC2 執行個體類型名稱前面加上 db.。例如,r5.8xlarge Amazon EC2 執行個體等同於 db.r5.8xlarge 資料庫執行個體類別。

增加網路頻寬

使用NetworkReceiveThroughputNetworkTransmitThroughput Amazon CloudWatch 指標監控資料庫執行個體上的傳入和傳出網路流量。這些指標可協助您判斷網路頻寬是否足以應付工作負載。

如果網路頻寬不夠,請增加頻寬。如果用 AWS 戶端或您的資料庫執行個體達到網路頻寬限制,增加頻寬的唯一方法是增加資料庫執行個體大小。如需詳細資訊,請參閱 資料庫執行個體類別的類型

如需 CloudWatch 測量結果的詳細資訊,請參閱Amazon 的 Amazon CloudWatch 指標 RDS

監控網路效能的最大值

如果您使用 Amazon EC2 用戶端,Amazon EC2 提供網路效能指標的最大值,包括傳入和傳出網路總頻寬。也提供連線追蹤來確保如預期傳回封包,還有網域名稱系統 (DNS) 等服務的連結本機服務存取。若要監控這些最大值,請使用目前的增強型網路驅動程式,以監控用戶端的網路效能。

如需詳細資訊,請參閱 Amazon EC2 使用者指南中的監控 Amazon EC2 執行個體的網路效能,以及在 Amazon EC2 使用者指南中監控 Amazon EC2 執行體的網路效能。

監控處於 "idle in transaction" 狀態的交易

檢查 idle in transaction 連線是否變多。作法是監控 pg_stat_activity 資料表的 state 資料欄。您可以執行類似下列的查詢來識別連線來源。

select client_addr, state, count(1) from pg_stat_activity where state like 'idle in transaction%' group by 1,2 order by 3 desc