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 saat Aurora PostgreSQL menunggu untuk menerima data dari klien.
Versi mesin yang didukung
Informasi peristiwa tunggu ini didukung untuk Aurora PostgreSQL versi 10 dan yang lebih tinggi.
Konteks
Klaster DB Aurora PostgreSQL menunggu untuk menerima data dari klien. Klaster DB Aurora PostgreSQL harus menerima data dari klien agar dapat mengirim lebih banyak data ke klien. Waktu saat klaster menunggu sebelum menerima data dari klien adalah 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 klaster DB Aurora PostgreSQL dan klien. Latensi jaringan yang lebih tinggi akan menambah waktu yang diperlukan agar klaster DB dapat 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 klaster DB Aurora PostgreSQL.
- Round trip jaringan yang berlebihan
-
Sejumlah besar round trip jaringan antara klaster DB Aurora PostgreSQL dan klien dapat menunda transmisi data dari klien ke klaster DB Aurora PostgreSQL.
- Operasi penyalinan besar
-
Selama operasi penyalinan, data ditransfer dari sistem file klien ke klaster DB Aurora PostgreSQL. Mengirim data dalam jumlah besar ke klaster DB dapat menunda transmisi data dari klien ke klaster DB.
- Koneksi klien idle
-
Koneksi ke instans DB Aurora PostgreSQL berada dalam status idle dalam transaksi dan sedang menunggu klien mengirim lebih banyak data atau mengeluarkan perintah. Status 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 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
Menempatkan klien di subnet VPC dan Zona Ketersediaan yang sama seperti klaster
Untuk mengurangi latensi jaringan dan meningkatkan throughput jaringan, tempatkan klien di subnet cloud privat virtual (VPC) dan Zona Ketersediaan yang sama seperti klaster DB Aurora PostgreSQL. Pastikan klien secara geografis berada sedekat mungkin dengan klaster DB.
Menskalakan klien
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 Kelas instans Amazon Aurora 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 di cluster 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 tentang CloudWatch metrik, lihat CloudWatch Metrik Amazon untuk Amazon Aurora.
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 kinerja jaringan untuk instans Amazon EC2 Anda di Panduan Pengguna Amazon EC2 dan Memantau kinerja jaringan untuk instans Amazon EC2 Anda 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