Klien: ClientRead - Amazon Aurora

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

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