Klien: ClientRead - Layanan Basis Data Relasional Amazon

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

Klien: ClientRead

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

Versi mesin yang didukung

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

Konteks

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

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 disebutpkt_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

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

Tempatkan klien di Zona Ketersediaan dan subnet VPC yang sama dengan instans.

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

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

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) di Panduan Pengguna Amazon EC2.

Untuk informasi tentang kelas instans DB, lihat DB. 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

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.

Untuk informasi selengkapnya tentang CloudWatch metrik, lihat CloudWatch Metrik Amazon untuk Amazon RDS.

Pantau nilai maksimum untuk performa jaringan

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 performa jaringan untuk instans Amazon EC2 Anda di Panduan Pengguna Amazon EC2 dan Memantau kinerja jaringan untuk instans Amazon EC2 di Panduan Pengguna Amazon EC2.

Pantau transaksi dalam status "idle dalam transaksi"

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