Memecahkan masalah latensi

Seperti sistem database lainnya, Bigtable dapat mengalami masalah latensi. Dokumen ini membahas penyebab umum masalah latensi di Bigtable dan menjelaskan cara memecahkan masalahnya.

Diagnosis dan selesaikan masalah latensi Bigtable menggunakan langkah-langkah pemecahan masalah di bagian berikut:

Memahami penyebab latensi tinggi

Faktor-faktor berikut berkontribusi pada masalah latensi di Bigtable:

  • Latensi server. Pengukuran latensi server dimulai saat Bigtable menerima permintaan dan berakhir saat Bigtable mengirimkan byte data terakhir ke klien. Untuk permintaan data dalam jumlah besar, kemampuan klien untuk menggunakan respons dapat memengaruhi latensi server.
  • Latensi operasi mengukur total waktu end-to-end untuk operasi Bigtable, termasuk semua percobaan ulang. Metrik ini melacak perjalanan pulang pergi dari klien ke Bigtable dan kembali ke klien. Latensi aplikasi, koneksi jaringan, latensi library klien Bigtable, dan latensi server Anda semuanya memengaruhi latensi operasi.
  • Pola workload dan permintaan dapat meningkatkan latensi, tidak hanya karena masalah infrastruktur, tetapi juga karena perubahan pola kerja yang diminta aplikasi. Misalnya, kueri pemindaian yang dibuat secara dinamis yang sebelumnya memindai seratus baris kini memindai satu juta baris karena impor data terbaru atau perubahan logika aplikasi. Meskipun sistem mungkin beroperasi secara efisien, peningkatan signifikan dalam jumlah pekerjaan untuk satu operasi menghasilkan waktu eksekusi yang lebih lama, yang dianggap oleh Bigtable sebagai latensi yang lebih tinggi.

Sebelum memulai

Untuk memecahkan masalah latensi tinggi, lakukan tugas berikut:

  • Aktifkan metrik sisi klien untuk library klien Anda guna mengoptimalkan performa dan menyelesaikan masalah.
  • Untuk meminimalkan latensi jaringan, pastikan aplikasi Anda berada di zona yang sama dengan cluster Bigtable. Hal ini mengurangi jarak jaringan antara aplikasi dan cluster Anda, sehingga meningkatkan waktu respons untuk permintaan.
  • Kumpulkan informasi berikut tentang lingkungan Bigtable Anda:
  • Kumpulkan informasi berikut tentang lingkungan sisi klien Anda:
  • Kumpulkan informasi berikut tentang masalah ini:

Memecahkan masalah latensi

Jika Anda mengalami masalah latensi di Bigtable, ikuti langkah-langkah berikut untuk memecahkan masalah:

  1. Periksa latensi server: Gunakan halaman Monitoring di konsolGoogle Cloud untuk melihat latensi server. Untuk mengetahui informasi selengkapnya, lihat Memantau dengan Cloud Monitoring. Periksa latensi instance Anda. Jika instance berisi beberapa cluster, bagi metrik berdasarkan cluster. Jika Anda mengamati peningkatan latensi dalam grafik latensi baca atau latensi tulis, atau dalam metrik sisi klien, ikuti langkah-langkah pemecahan masalah latensi server di bagian Memecahkan masalah latensi server dalam dokumen ini.
  2. Memeriksa latensi klien: Setelah mengaktifkan metrik sisi klien, telusuri bigtable.googleapis.com/client di Metrics Explorer Cloud Monitoring. Tinjau metrik sisi klien yang tersedia. Jika Anda melihat peningkatan latensi dalam metrik sisi klien, tetapi tidak di server, periksa aplikasi dan koneksi jaringan Anda. Untuk mengetahui informasi selengkapnya, lihat bagian Memecahkan masalah latensi klien dalam dokumen ini.

Diagram berikut menunjukkan proses pemecahan masalah peningkatan latensi di Bigtable:

Diagram alir untuk memecahkan masalah latensi Bigtable.
Gambar 1. Proses pemecahan masalah latensi Bigtable (klik untuk memperbesar).

Memecahkan masalah latensi klien

Ikuti langkah-langkah berikut untuk memecahkan masalah latensi sisi klien.

Sebelum memulai

Sebelum mulai memecahkan masalah latensi sisi klien, selesaikan tugas-tugas berikut:

  • Mengaktifkan Metrik sisi klien di Bigtable.
  • Aktifkan priming saluran jika Anda menggunakan klien Java versi 2.17.1 atau yang lebih lama. Pemuatan ulang saluran diaktifkan secara default mulai versi 2.18.0.
  • Lakukan iterasi untuk menentukan ukuran kumpulan koneksi yang optimal untuk workload Anda. Saluran yang tidak memadai atau berlebihan dapat menyebabkan latensi percobaan yang tinggi.

Memeriksa latensi pemblokiran aplikasi

Periksa metrik Application Blocking Latencies di konsol Google Cloud dan lakukan salah satu tindakan berikut:

  • Jika latensi pemblokiran aplikasi tinggi dan sesuai dengan peningkatan latensi yang dilaporkan, fokuslah pada pemecahan masalah sisi klien.
  • Jika latensi pemblokiran aplikasi tinggi dan klien dihosting di infrastrukturGoogle Cloud , seperti GKE atau Compute Engine, eskalasikan ke tim dukungan Google Cloud yang sesuai.
  • Jika latensi pemblokiran aplikasi rendah dan latensi layanan Bigtable juga rendah, bottleneck latensi kemungkinan terletak pada komponen perantara jaringan atau jalur traffic, seperti jaringan atau frontend Google. Pertimbangkan untuk meneruskan masalah ke tim jaringan Google Cloud untuk membantu Anda melakukan pengambilan paket lengkap guna mengidentifikasi bottleneck latensi.

Mengatasi latensi operasi yang tinggi

  1. Jika connectivity_error_count tinggi, aplikasi akan mengalami masalah dalam menjangkau frontend Google. Tetapkan waktu tunggu RPC yang lebih rendah agar permintaan dapat dicoba ulang di saluran yang berbeda.
    • Jika waktu tunggu RPC terlalu rendah, hal ini juga dapat menyebabkan latensi operasi yang tinggi. Tentukan waktu tunggu RPC P99 standar selama operasi normal. Menetapkan nilai waktu tunggu RPC yang lebih mendekati tolok ukur ini akan membantu mengoptimalkan performa.
  2. Jika retry_count tinggi, periksa tag status attempt_latencies. Jika upaya gagal dengan error DEADLINE_EXCEEDED, batas waktu permintaan terlalu singkat dibandingkan dengan rata-rata attempt_latencies.

Menangani permintaan yang diantrekan di thread gRPC

Jika tidak ada metrik yang melebihi norma, permintaan mungkin akan mengantre di thread gRPC. Hal ini dapat terjadi karena alasan berikut:

  • Ukuran kumpulan saluran terlalu kecil, dan permintaan mengantre di saluran gRPC. Untuk mengetahui informasi selengkapnya, lihat Permintaan yang di-buffer.
  • Penggunaan CPU VM klien tinggi. Penggunaan CPU yang tinggi juga menyebabkan antrean permintaan di klien.

Memecahkan masalah latensi server

Ikuti langkah-langkah berikut untuk memecahkan masalah latensi sisi server.

Menentukan apakah cluster kelebihan beban

  1. Periksa grafik Read requests dan Write requests untuk melihat perubahan QPS.
  2. Periksa grafik Node count untuk melihat perubahan jumlah node.
  3. Periksa grafik Read throughput dan Write throughput untuk melihat peningkatan bandwidth. Untuk mengetahui informasi selengkapnya, lihat Memahami performa.
  4. Untuk mengidentifikasi cara CPU digunakan oleh profil aplikasi, metode, dan tabel guna memecahkan masalah performa, lihat postingan blog Di mana cluster Cloud Bigtable Anda menggunakan CPU-nya?.
  5. Tingkatkan jumlah node di cluster yang terpengaruh. Untuk mengetahui informasi selengkapnya, lihat Menambahkan atau menghapus node secara manual. dan Penskalaan otomatis. Pastikan pemakaian CPU rata-rata tetap berada di bawah batas yang direkomendasikan.

Memeriksa hotspot

Tablet panas menggunakan persentase CPU node yang sangat besar dibandingkan dengan tablet lain yang terkait dengan node tersebut. Penggunaan yang tidak seimbang ini dapat terjadi karena volume permintaan yang tinggi dan tidak terduga ke rentang baris atau kelemahan dalam desain skema. Penggunaan node yang tidak seimbang ini dapat menyebabkan latensi yang lebih tinggi dan penundaan replikasi, yang dikenal sebagai hotspot.

  1. Amati hotspot di grafik CPU utilization (hottest node) high granularity.
  2. Untuk mengidentifikasi tablet panas, gunakan tablet panas atau alat Key Visualizer.
  3. Tidak seperti pemakaian CPU berlebih di tingkat cluster, yang sering kali dapat Anda mitigasi dengan menambahkan lebih banyak node (penskalaan horizontal), hotspot mungkin memerlukan teknik mitigasi lainnya. Teknik ini mencakup mengubah cara Anda membuat row key atau mengubah skema. Untuk mengetahui informasi selengkapnya, lihat postingan blog Menghilangkan hotspot di Cloud Bigtable.

Mengatasi latensi dengan QPS rendah

Bigtable berperforma terbaik dengan tabel besar yang sering Anda akses. Jika Anda mengirim permintaan setelah tidak ada penggunaan selama beberapa waktu, Anda mungkin melihat latensi yang tinggi saat Bigtable membuat ulang koneksi.

  1. Jika grafik Read requests dan Write requests menunjukkan QPS rendah, perkirakan waktu respons yang lebih lambat.
  2. Atasi masalah cold start dengan mengikuti praktik terbaik di Cold start dan QPS rendah.

Mengevaluasi efisiensi permintaan

Evaluasi efisiensi permintaan menggunakan halaman Pola akses dan statistik kueri:

  • Gunakan halaman Access patterns di konsol Google Cloud untuk memantau perincian jenis kueri baca dan tulis dari waktu ke waktu (seperti pembacaan titik, pemindaian singkat, pemindaian terbalik, pembacaan sparse, dan pembacaan massal) dan membandingkan Scanned rows dan Cells seen dengan Returned rows dan Sent cells untuk tabel dan profil aplikasi Anda. Untuk mengetahui informasi selengkapnya, lihat Menganalisis pola akses.
  • Gunakan statistik kueri untuk memeriksa rasio baris yang dilihat terhadap baris yang ditampilkan dan sel yang dilihat terhadap sel yang ditampilkan untuk setiap permintaan baca. Tingkatkan efisiensi permintaan dengan meninjau kembali pola kueri, filter, atau desain skema. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan statistik kueri.

Memeriksa perubahan konfigurasi atau profil aplikasi

Jika jumlah node dan throughput tidak berubah, tetapi pemakaian CPU rata-rata meningkat, hal ini mungkin disebabkan oleh perubahan dalam strategi replikasi atau pembersihan sampah memori. Untuk mengetahui informasi selengkapnya, lihat Replikasi dan performa. Kembalikan perubahan konfigurasi apa pun untuk replikasi atau pembersihan sampah memori.

Melakukan eskalasi ke dukungan Bigtable

Jika langkah-langkah sebelumnya tidak menyelesaikan masalah, eskalasikan ke dukungan Bigtable.

Langkah berikutnya