

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Klien: ClientRead
<a name="wait-event.clientread"></a>

Peristiwa `Client:ClientRead` terjadi ketika RDS for PostgreSQL menunggu untuk menerima data dari klien.

**Topics**
+ [Versi mesin yang didukung](#wait-event.clientread.context.supported)
+ [Konteks](#wait-event.clientread.context)
+ [Kemungkinan penyebab peningkatan peristiwa tunggu](#wait-event.clientread.causes)
+ [Tindakan](#wait-event.clientread.actions)

## Versi mesin yang didukung
<a name="wait-event.clientread.context.supported"></a>

Informasi peristiwa tunggu ini didukung untuk RDS for PostgreSQL versi 10 dan yang lebih tinggi.

## Konteks
<a name="wait-event.clientread.context"></a>

Instans DB RDS for PostgreSQL menunggu untuk menerima data dari klien. Instans DB RDS for PostgreSQL harus menerima data dari klien sebelum dapat mengirim lebih banyak data ke klien. Waktu instans menunggu sebelum menerima data dari klien adalah sebuah peristiwa `Client:ClientRead`.

## Kemungkinan penyebab peningkatan peristiwa tunggu
<a name="wait-event.clientread.causes"></a>

Penyebab umum peristiwa `Client:ClientRead` muncul dalam peristiwa tunggu teratas mencakup yang berikut: 

**Peningkatan latensi jaringan**  
Mungkin terdapat peningkatan latensi jaringan antara instans DB RDS for PostgreSQL dan klien. Latensi jaringan yang lebih tinggi meningkatkan waktu yang dibutuhkan instans DB untuk menerima data dari klien.

**Peningkatan beban pada klien**  
Mungkin terdapat tekanan CPU atau saturasi jaringan pada klien. Peningkatan beban pada klien dapat menunda transmisi data dari klien ke instans DB RDS for PostgreSQL.

**Round trip jaringan yang berlebihan**  
Sejumlah besar round trip jaringan antara instans DB RDS for PostgreSQL dan klien dapat menunda transmisi data dari klien ke instans DB RDS for PostgreSQL.

**Operasi penyalinan besar**  
Selama operasi penyalinan, data ditransfer dari sistem file klien ke instans DB RDS for PostgreSQL. Mengirim sejumlah besar data ke instans DB dapat menunda transmisi data dari klien ke instans DB.

**Koneksi klien idle**  
Ketika klien terhubung ke instans DB RDS for PostgreSQL dalam status `idle in transaction`, instans DB ini mungkin menunggu klien mengirim lebih banyak data atau memberikan perintah. Koneksi dalam keadaan ini dapat menyebabkan peningkatan peristiwa `Client:ClientRead`.

**PgBouncer digunakan untuk penyatuan koneksi**  
PgBouncer memiliki pengaturan konfigurasi jaringan tingkat rendah yang disebut`pkt_buf`, yang diatur ke 4.096 secara default. Jika beban kerja mengirimkan paket kueri yang lebih besar dari 4.096 byte PgBouncer, kami sarankan untuk meningkatkan pengaturan menjadi 8.192. `pkt_buf` Jika pengaturan baru tidak mengurangi jumlah peristiwa `Client:ClientRead`, sebaiknya tingkatkan pengaturan `pkt_buf` ke nilai yang lebih besar, seperti 16.384 atau 32.768. Jika teks kueri berukuran besar, pengaturan yang lebih besar dapat sangat membantu.

## Tindakan
<a name="wait-event.clientread.actions"></a>

Kami merekomendasikan berbagai tindakan, tergantung pada penyebab peristiwa tunggu Anda.

**Topics**
+ [Tempatkan klien di Zona Ketersediaan dan subnet VPC yang sama dengan instans.](#wait-event.clientread.actions.az-vpc-subnet)
+ [Skalakan klien Anda](#wait-event.clientread.actions.scale-client)
+ [Gunakan instans generasi saat ini](#wait-event.clientread.actions.db-instance-class)
+ [Meningkatkan bandwidth jaringan](#wait-event.clientread.actions.increase-network-bandwidth)
+ [Pantau nilai maksimum untuk performa jaringan](#wait-event.clientread.actions.monitor-network-performance)
+ [Pantau transaksi dalam status "idle dalam transaksi"](#wait-event.clientread.actions.check-idle-in-transaction)

### Tempatkan klien di Zona Ketersediaan dan subnet VPC yang sama dengan instans.
<a name="wait-event.clientread.actions.az-vpc-subnet"></a>

Untuk mengurangi latensi jaringan dan meningkatkan throughput jaringan, tempatkan klien di Zona Ketersediaan dan subnet cloud privat virtual (VPC) yang sama dengan instans DB RDS for PostgreSQL. Pastikan bahwa klien secara geografis sedekat mungkin dengan instans DB.

### Skalakan klien Anda
<a name="wait-event.clientread.actions.scale-client"></a>

Menggunakan Amazon CloudWatch atau metrik host lainnya, tentukan apakah klien Anda saat ini dibatasi oleh CPU atau bandwidth jaringan, atau keduanya. Jika klien dibatasi, skalakan klien sesuai yang diperlukan.

### Gunakan instans generasi saat ini
<a name="wait-event.clientread.actions.db-instance-class"></a>

Dalam kasus tertentu, Anda mungkin tidak menggunakan kelas instans DB yang mendukung frame jumbo. Jika Anda menjalankan aplikasi di Amazon EC2, pertimbangkan untuk menggunakan instans generasi saat ini untuk klien. Selain itu, konfigurasikan unit transmisi maksimum (MTU) pada sistem operasi klien. Teknik ini dapat mengurangi jumlah round trip jaringan dan meningkatkan throughput jaringan. Untuk informasi selengkapnya, lihat [Jumbo frame (9001 MTU)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/network_mtu.html#jumbo_frame_instances) di Panduan Pengguna *Amazon EC2*.

Untuk informasi tentang kelas instans DB, lihat [ DB](Concepts.DBInstanceClass.md). Untuk menentukan kelas instans DB yang setara dengan jenis instans Amazon EC2, tempatkan `db.` sebelum nama jenis instans Amazon EC2. Misalnya, instans Amazon EC2 `r5.8xlarge` setara dengan kelas instans DB `db.r5.8xlarge`.

### Meningkatkan bandwidth jaringan
<a name="wait-event.clientread.actions.increase-network-bandwidth"></a>

Gunakan `NetworkReceiveThroughput` dan CloudWatch metrik `NetworkTransmitThroughput` Amazon untuk memantau lalu lintas jaringan masuk dan keluar pada instans DB. Metrik ini dapat membantu mengetahui apakah bandwidth jaringan cukup untuk beban kerja Anda. 

Jika bandwidth jaringan Anda tidak cukup, tingkatkan. Jika AWS klien atau instans DB Anda mencapai batas bandwidth jaringan, satu-satunya cara untuk meningkatkan bandwidth adalah dengan meningkatkan ukuran instans DB Anda. Untuk informasi selengkapnya, lihat [Jenis kelas instans DB](Concepts.DBInstanceClass.Types.md).

Untuk informasi selengkapnya tentang CloudWatch metrik, lihat[CloudWatch Metrik Amazon untuk Amazon RDS](rds-metrics.md). 

### Pantau nilai maksimum untuk performa jaringan
<a name="wait-event.clientread.actions.monitor-network-performance"></a>

Jika Anda menggunakan klien Amazon EC2, Amazon EC2 menyediakan nilai maksimum untuk metrik performa jaringan, termasuk bandwidth jaringan masuk dan keluar agregat. Amazon EC2 juga menyediakan pelacakan koneksi untuk memastikan paket dikembalikan sebagaimana diharapkan dan akses layanan tautan-lokal untuk layanan seperti Sistem Nama Domain (DNS). Untuk memantau nilai maksimum ini, gunakan driver jaringan yang ditingkatkan saat ini dan pantau performa jaringan untuk klien Anda. 

*Untuk informasi selengkapnya, lihat [Memantau kinerja jaringan untuk instans Amazon EC2 Anda](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitoring-network-performance-ena.html) di Panduan *Pengguna Amazon EC2* [dan Memantau kinerja jaringan untuk instans Amazon EC2 Anda di Panduan Pengguna Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitoring-network-performance-ena.html).*

### Pantau transaksi dalam status "idle dalam transaksi"
<a name="wait-event.clientread.actions.check-idle-in-transaction"></a>

Periksa apakah Anda memiliki peningkatan jumlah koneksi `idle in transaction`. Untuk melakukannya, pantau kolom `state` dalam tabel `pg_stat_activity`. Anda mungkin dapat mengidentifikasi sumber koneksi dengan menjalankan kueri seperti yang berikut ini.

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