

# クライアント: ClientWrite
<a name="apg-waits.clientwrite"></a>

`Client:ClientWrite`イベントは、Aurora PostgreSQL がクライアントへのデータの書き込みを待っているときに発生します。

**Topics**
+ [サポート対象エンジンバージョン](#apg-waits.clientwrite.context.supported)
+ [Context](#apg-waits.clientwrite.context)
+ [待機時間が増加する原因の可能性](#apg-waits.clientwrite.causes)
+ [アクション](#apg-waits.clientwrite.actions)

## サポート対象エンジンバージョン
<a name="apg-waits.clientwrite.context.supported"></a>

この待機イベント情報は、Aurora PostgreSQL バージョン 10 以降でサポートされています。

## Context
<a name="apg-waits.clientwrite.context"></a>

クライアントプロセスは、クラスターがさらにデータを送信する前に、Aurora PostgreSQL DB クラスターから受信したすべてのデータを読み込む必要があります。クライアントにより多くのデータを送信する前にクラスターが待機する時間は、`Client:ClientWrite`イベントになります。

Aurora PostgreSQL DB クラスターとクライアント間のネットワークスループットが低下すると、このイベントが発生することがあります。クライアントの CPU プレッシャーとネットワークの飽和により、このイベントが発生することがあります。*CPU プレッシャー*とは、CPU が完全に使用されており、CPU 時間を待っているタスクがあることです。*ネットワーク飽和度*とは、データベースとクライアント間のネットワークが、処理できるデータ以上のデータを伝送しているときです。

## 待機時間が増加する原因の可能性
<a name="apg-waits.clientwrite.causes"></a>

`Client:ClientWrite`上位待機中に表示されるイベントの一般的な原因には、次のものがあります。

**ネットワークレイテンシーの増加**  
Aurora PostgreSQL DB クラスターとクライアントの間のネットワークレイテンシーが増加することがあります。ネットワークレイテンシーが高いほど、クライアントからデータを受信するために必要な時間が長くなります。

**クライアント側への負荷の増加**  
クライアント側で CPU プレッシャーまたはネットワーク飽和が発生する可能性があります。クライアントの負荷が増加すると、Aurora PostgreSQL DB クラスターからのデータの受信が遅延します。

**クライアントに送信される大量のデータ**  
Aurora PostgreSQL DB クラスターがクライアントに大量のデータを送信している可能性があります。クライアントは、クラスターのデータ送信と同じ速度ではデータを受信できない場合があります。大きなテーブルのコピーなどのアクティビティは、`Client:ClientWrite`イベントの増加につながることがあります。

## アクション
<a name="apg-waits.clientwrite.actions"></a>

待機イベントの原因に応じたさまざまなアクションをお勧めします。

**Topics**
+ [クライアントをクラスターと同じアベイラビリティーゾーンと VPC サブネットに配置します。](#apg-waits.clientwrite.actions.az-vpc-subnet)
+ [現行世代のインスタンス](#apg-waits.clientwrite.actions.db-instance-class)
+ [クライアントに送信するデータ量を減らします。](#apg-waits.clientwrite.actions.reduce-data)
+ [クライアントのスケーリング](#apg-waits.clientwrite.actions.scale-client)

### クライアントをクラスターと同じアベイラビリティーゾーンと VPC サブネットに配置します。
<a name="apg-waits.clientwrite.actions.az-vpc-subnet"></a>

ネットワークレイテンシーを減らしてネットワークスループットを向上するには、Aurora PostgreSQL DB クラスターと同じアベイラビリティーゾーンおよび仮想プライベートクラウド (VPC) サブネットにクライアントを配置します。

### 現行世代のインスタンス
<a name="apg-waits.clientwrite.actions.db-instance-class"></a>

場合によっては、ジャンボフレームをサポートする DB インスタンスクラスを使用していない可能性があります。Amazon EC2 でアプリケーションを実行している場合は、クライアント側に現行世代のインスタンスを使用することを検討してください。また、クライアントのOSで最大送信単位 (MTU) を設定します。この技術では、ネットワークラウンドトリップの数を減らし、ネットワークスループットを向上させることができます。詳細については、「*Amazon EC2 ユーザーガイド*」の「[ジャンボフレーム (9001 MTU)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#jumbo_frame_instances)」を参照してください。

DB インスタンスクラスの詳細については、「[Amazon Aurora DB インスタンスクラス](Concepts.DBInstanceClass.md)」を参照してください。Amazon EC2 インスタンスタイプと同等の DB インスタンスクラスを決定するには、`db.`Amazon EC2 インスタンスタイプの前に配置します。例えば、`r5.8xlarge`Amazon EC2 インスタンスは`db.r5.8xlarge`DB インスタンスクラスと同等です。

### クライアントに送信するデータ量を減らします。
<a name="apg-waits.clientwrite.actions.reduce-data"></a>

可能であれば、Aurora PostgreSQL DB クラスターがクライアントに送信するデータ量を減らすようにアプリケーションを調整します。このような調整を行うと、クライアントの CPU やネットワークの競合を軽減します。

### クライアントのスケーリング
<a name="apg-waits.clientwrite.actions.scale-client"></a>

Amazon CloudWatch またはその他のホストメトリクスを使用して、クライアント側が現在 CPU またはネットワーク帯域幅、またはその両方によって制約を受けているかどうかを判断します。クライアント側が制約を受けている場合は、それに応じてクライアントをスケーリングします。