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:
- 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.
- Memeriksa latensi klien: Setelah mengaktifkan metrik sisi klien, telusuri
bigtable.googleapis.com/clientdi 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:
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
- Jika
connectivity_error_counttinggi, 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.
- Jika
retry_counttinggi, periksa tag statusattempt_latencies. Jika upaya gagal dengan errorDEADLINE_EXCEEDED, batas waktu permintaan terlalu singkat dibandingkan dengan rata-rataattempt_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
- Periksa grafik
Read requestsdanWrite requestsuntuk melihat perubahan QPS. - Periksa grafik
Node countuntuk melihat perubahan jumlah node. - Periksa grafik
Read throughputdanWrite throughputuntuk melihat peningkatan bandwidth. Untuk mengetahui informasi selengkapnya, lihat Memahami performa. - 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?.
- 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.
- Amati hotspot di grafik
CPU utilization (hottest node) high granularity. - Untuk mengidentifikasi tablet panas, gunakan tablet panas atau alat Key Visualizer.
- 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.
- Jika grafik
Read requestsdanWrite requestsmenunjukkan QPS rendah, perkirakan waktu respons yang lebih lambat. - 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
- Pelajari lebih lanjut performa Bigtable.
- Lihat Metrik Bigtable.
- Pelajari metrik yang tersedia di Key Visualizer.