Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
io/aurora_respond_to_client
Peristiwa io/aurora_respond_to_client
terjadi ketika thread menunggu untuk mengembalikan set hasil ke klien.
Versi mesin yang didukung
Informasi peristiwa tunggu ini didukung untuk versi mesin berikut:
-
Aurora MySQL versi 2
Dalam versi sebelum 2.07.7, 2.09.3, dan 2.10.2, peristiwa tunggu ini secara keliru menyertakan waktu idle.
Konteks
Peristiwa io/aurora_respond_to_client
menunjukkan bahwa thread menunggu untuk mengembalikan set hasil ke klien.
Pemrosesan kueri selesai, dan hasilnya dikembalikan ke klien aplikasi. Namun, karena bandwidth jaringan pada klaster DB tidak cukup, thread menunggu untuk mengembalikan set hasil.
Kemungkinan penyebab peningkatan peristiwa tunggu
Saat peristiwa io/aurora_respond_to_client
muncul lebih dari biasanya, yang mungkin menunjukkan adanya masalah performa, berikut adalah penyebab umumnya:
- Kelas instans DB tidak cukup untuk beban kerja
-
Kelas instans DB yang digunakan oleh klaster DB tidak memiliki bandwidth jaringan yang diperlukan untuk memproses beban kerja secara efisien.
- Set hasil besar
-
Terjadi peningkatan ukuran set hasil yang dikembalikan karena kueri mengembalikan jumlah baris yang lebih tinggi. Set hasil yang lebih besar menghabiskan lebih banyak bandwidth jaringan.
- Peningkatan beban pada klien
-
Mungkin terdapat tekanan CPU, tekanan memori, atau saturasi jaringan pada klien. Peningkatan beban pada klien menunda penerimaan data dari klaster DB Aurora MySQL.
- Peningkatan latensi jaringan
-
Mungkin terdapat peningkatan latensi jaringan antara klaster DB Aurora MySQL dan klien. Latensi jaringan yang lebih tinggi akan menambah waktu yang diperlukan klien untuk menerima data.
Tindakan
Kami merekomendasikan berbagai tindakan, tergantung pada penyebab peristiwa tunggu Anda.
Topik
Mengidentifikasi sesi dan kueri penyebab peristiwa
Anda dapat menggunakan Wawasan Performa untuk menampilkan kueri yang diblokir oleh peristiwa tunggu io/aurora_respond_to_client
. Biasanya, basis data dengan beban sedang hingga signifikan memiliki peristiwa tunggu. Peristiwa tunggu ini mungkin dapat diterima jika basis data berperforma optimal. Jika tidak, periksa di mana basis data tersebut menghabiskan waktu terbanyak. Lihat peristiwa tunggu yang berkontribusi ke beban tertinggi, lalu cari tahu apakah Anda dapat mengoptimalkan basis data dan aplikasi untuk mengurangi peristiwa tersebut.
Untuk menemukan kueri SQL yang bertanggung jawab atas beban tinggi:
Masuk ke AWS Management Console, lalu buka konsol Amazon RDS di https://console.aws.amazon.com/rds/
. -
Di panel navigasi, pilih Wawasan Performa.
-
Pilih instans DB. Dasbor Wawasan Performa ditampilkan untuk instans DB tersebut.
-
Dalam bagan Beban basis data, pilih Potong berdasarkan masa tunggu.
-
Di bagian bawah halaman, pilih SQL Teratas.
Bagan ini mencantumkan kueri SQL yang bertanggung jawab atas beban. Kueri di bagian atas daftar memiliki tanggung jawab terbesar. Untuk mengatasi kemacetan, fokus pada pernyataan tersebut.
Untuk ikhtisar pemecahan masalah yang berguna menggunakan Wawasan Performa, lihat postingan Blog Basis Data AWS, Menganalisis Beban Kerja Amazon Aurora MySQL dengan Wawasan Performa
Menskalakan kelas instans DB
Periksa peningkatan nilai metrik Amazon CloudWatch yang terkait dengan throughput jaringan, seperti NetworkReceiveThroughput
dan NetworkTransmitThroughput
. Jika bandwidth jaringan kelas instans DB tercapai, Anda dapat menskalakan kelas instans DB yang digunakan oleh klaster DB dengan memodifikasi klaster DB tersebut. Kelas instans DB dengan bandwidth jaringan yang lebih besar mengembalikan data ke klien secara lebih efisien.
Untuk informasi tentang pemantauan metrik Amazon CloudWatch, lihat Melihat metrik di konsol Amazon RDS. Untuk informasi tentang kelas instans DB, lihat Kelas instans Amazon Aurora DB. Untuk informasi tentang mengubah klaster DB, lihat Memodifikasi klaster DB Amazon Aurora.
Memeriksa beban kerja untuk hasil yang tidak terduga
Periksa beban kerja pada klaster DB dan pastikan beban kerja tidak memberikan hasil yang tidak terduga. Misalnya, mungkin terdapat kueri yang mengembalikan jumlah baris lebih tinggi dari yang diperkirakan. Dalam hal ini, Anda dapat menggunakan metrik penghitung Wawasan Performa seperti Innodb_rows_read
. Untuk informasi selengkapnya, lihat Metrik penghitung Wawasan Performa.
Mendistribusikan beban kerja dengan instans pembaca
Anda dapat mendistribusikan beban kerja hanya-baca dengan Aurora Replicas. Anda dapat menskalakan secara horizontal dengan menambahkan lebih banyak Aurora Replicas. Dengan demikian, Anda dapat memperoleh peningkatan batas throttling untuk bandwidth jaringan. Untuk informasi selengkapnya, lihat Klaster DB Amazon Aurora.
Menggunakan pengubah SQL_BUFFER_RESULT
Anda dapat menambahkan pengubah SQL_BUFFER_RESULT
ke pernyataan SELECT
untuk memaksakan hasilnya ke tabel sementara sebelum dikembalikan ke klien. Pengubah ini dapat membantu mengatasi masalah performa saat kunci InnoDB tidak dibebaskan karena kueri berada dalam status tunggu io/aurora_respond_to_client
. Untuk informasi selengkapnya, lihat Pernyataan SELECT