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 peristiwaClient: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 peristiwaClient:ClientRead
, sebaiknya tingkatkan pengaturanpkt_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.
Topik
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