

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

# Client:ClientWrite
<a name="wait-event.clientwrite"></a>

`Client:ClientWrite` 事件表示 RDS for PostgreSQL 正在等待將資料寫入用戶端。

**Topics**
+ [支援的引擎版本](#wait-event.clientwrite.context.supported)
+ [Context](#wait-event.clientwrite.context)
+ [等待變多的可能原因](#wait-event.clientwrite.causes)
+ [動作](#wait-event.clientwrite.actions)

## 支援的引擎版本
<a name="wait-event.clientwrite.context.supported"></a>

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

## Context
<a name="wait-event.clientwrite.context"></a>

用戶端程序必須先讀取從 RDS for PostgreSQL 資料庫叢集收到的所有資料，叢集才能傳送更多資料。叢集將更多資料傳送至用戶端之前等待的時間是 `Client:ClientWrite` 事件。

RDS for PostgreSQL 資料庫執行個體與用戶端之間的網路輸送量減少可能造成此事件。用戶端的 CPU 壓力和網路飽和也可能造成此事件。*CPU 壓力*表示 CPU 耗盡，但有任務正在等待 CPU 時間。*網路飽和*表示資料庫與用戶端之間的網路傳送太多資料，應付不來。

## 等待變多的可能原因
<a name="wait-event.clientwrite.causes"></a>

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

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

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

**傳送大量資料給用戶端**  
RDS for PostgreSQL 資料庫執行個體可能將大量資料傳送至用戶端。用戶端可能來不及接收叢集傳送的資料。例如，複製大型資料表這種活動可能導致 `Client:ClientWrite` 事件增加。

## 動作
<a name="wait-event.clientwrite.actions"></a>

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

**Topics**
+ [將用戶端放在與叢集相同的可用區域和 VPC 子網路中](#wait-event.clientwrite.actions.az-vpc-subnet)
+ [使用最新一代的執行個體](#wait-event.clientwrite.actions.db-instance-class)
+ [減少傳送至用戶端的資料量](#wait-event.clientwrite.actions.reduce-data)
+ [擴展用戶端](#wait-event.clientwrite.actions.scale-client)

### 將用戶端放在與叢集相同的可用區域和 VPC 子網路中
<a name="wait-event.clientwrite.actions.az-vpc-subnet"></a>

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

### 使用最新一代的執行個體
<a name="wait-event.clientwrite.actions.db-instance-class"></a>

在某些情況下，您使用的資料庫執行個體類別可能不支援 Jumbo Frame。如果您在 Amazon EC2 上執行應用程式，請考慮為用戶端使用最新一代的執行個體。此外，在用戶端作業系統上設定最大傳輸單位 (MTU)。此技術可以減少網路往返次數並增加網路輸送量。如需詳細資訊，請參閱《Amazon EC2 使用者指南》**中的 [Jumbo Frame (9001 MTU)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#jumbo_frame_instances)。

如需資料庫執行個體類別的相關資訊，請參閱 [ 資料庫執行個體類別](Concepts.DBInstanceClass.md)。若要決定等同於 Amazon EC2 執行個體類型的資料庫執行個體類別，請在 Amazon EC2 執行個體類型名稱前面加上 `db.`。例如，`r5.8xlarge` Amazon EC2 執行個體等同於 `db.r5.8xlarge` 資料庫執行個體類別。

### 減少傳送至用戶端的資料量
<a name="wait-event.clientwrite.actions.reduce-data"></a>

可能的話，請調整應用程式，以減少 RDS for PostgreSQL 資料庫執行個體傳送至用戶端的資料量。這樣調整可以減輕用戶端的 CPU 和網路爭用情形。

### 擴展用戶端
<a name="wait-event.clientwrite.actions.scale-client"></a>

使用 Amazon CloudWatch 或其他主機指標，判斷用戶端目前是否受限於 CPU、網路頻寬，或同時受限於這兩者。如果用戶端受到限制，請相應地擴展用戶端。