Ringkasan pengambilan performa Cloud SQL

Pengambilan performa Cloud SQL untuk MySQL membantu Anda mendiagnosis dan menyelesaikan masalah performa yang kompleks dan sementara di database MySQL yang disebabkan oleh permintaan sistem yang terus berkembang. Seiring dengan bertambahnya skala workload aplikasi dan infrastruktur di sekitarnya menjadi lebih kompleks, database akan mengalami peningkatan dan permintaan yang tidak terduga. Tekanan sistem eksternal ini dapat menyebabkan database melambat atau terhenti.

Saat database Anda mengalami penurunan performa, metrik standar mungkin tidak cukup untuk mengidentifikasi penyebab utama dalam konteks infrastruktur Anda yang lebih besar. Pengambilan performa mengatasi masalah ini dengan mengambil snapshot database yang mendetail dan pada waktu tertentu saat masalah terdeteksi. Anda dapat menggunakan pemicu yang dapat dikonfigurasi untuk mengambil snapshot seluruh sistem saat masalah sementara terjadi. Pemicu juga dapat mendeteksi transaksi yang berjalan lama, yang dapat menjadi penyebab utama masalah performa. Anda dapat mengonfigurasi pemicu untuk mengakhiri transaksi yang berjalan lama secara otomatis.

Contoh kasus penggunaan

Bagian ini mencantumkan contoh kasus penggunaan tentang cara menggunakan pengambilan performa setelah Anda mengaktifkannya untuk instance Anda.

Kasus penggunaan Kondisi pemicu Insight diagnostik
Perlambatan seluruh sistem karena akumulasi log pembatalan Panjang daftar histori Mengidentifikasi kapan proses penghapusan InnoDB tertinggal karena pembacaan yang berjalan lama atau operasi bahasa pengolahan data (DML) yang besar. Penundaan ini dapat menyebabkan peningkatan tekanan penyimpanan dan penurunan performa.
Database terhenti karena pertentangan mesin internal Penantian semaphore Berguna untuk mendiagnosis database yang tidak responsif. Pemicu ini dapat mendeteksi pertentangan kunci mutex atau baca-tulis dalam mesin penyimpanan InnoDB, seperti pertentangan Adaptive Hash Index (AHI) atau buffer pool.
Pertentangan kunci tingkat aplikasi atau kueri yang tidak diindeks Penantian kunci transaksi Dipicu saat sejumlah besar transaksi berada dalam status LOCK WAIT, yang menunjukkan pertentangan tingkat baris atau transaksi tidak aktif yang berjalan lama.
Instance kelebihan beban dari pengurutan atau agregasi yang kompleks Penggunaan CPU yang tinggi Mengambil status selama penggunaan CPU container yang tinggi, sering kali disebabkan oleh kueri yang tidak efisien atau lonjakan serentak yang besar.
Risiko memulai ulang Out-of-Memory (OOM) Penggunaan memori yang tinggi Membantu Anda mendiagnosis masalah seperti buffer per thread yang terlalu besar atau kebocoran memori sebelum menyebabkan instance error.
Lonjakan traffic mendadak atau aplikasi klien yang mengalami bottleneck Thread yang berjalan Indikator umum beban instance, berguna untuk mengidentifikasi lonjakan mendadak dalam koneksi aktif serentak.
Data lama pada replika karena workload tulis yang berat Detik di belakang sumber Memantau latensi replikasi pada replika baca untuk membantu mendiagnosis penundaan dalam menyinkronkan data dari instance utama.
Kueri yang berjalan lama memblokir penghapusan Transaksi yang berjalan lama Mengidentifikasi transaksi yang telah dibuka terlalu lama dan mungkin menahan kunci penting. Selain itu, Anda dapat mengakhiri transaksi yang berjalan lama secara otomatis.

Cara data performa diambil

Pengambilan performa beroperasi sebagai layanan berbasis agen yang memantau instance Anda. Saat Anda mengaktifkan pengambilan performa, instance Cloud SQL Anda akan melakukan hal berikut untuk mengambil data performa:

  1. Agen akan menyelidiki konfigurasi instance Anda untuk membaca pemicu berbasis nilai minimum yang telah Anda tentukan. Kemudian, agen akan menyelidiki metrik instance Anda pada interval yang dapat dikonfigurasi, probingIntervalSeconds, yang ditetapkan ke 30 detik secara default.

  2. Jika masalah terdeteksi dan nilai minimum pemicu telah terlampaui, agen akan terus membandingkan status langsung instance dengan aturan Anda. Untuk mencegah alarm palsu dari lonjakan sementara, agen akan memicu pengambilan performa penuh. Pengambilan dipicu hanya jika kondisi terpenuhi selama penyelidikan berturut-turut untuk probeThreshold yang dikonfigurasi, yang secara default ditetapkan ke 3. Nilai minimum berturut-turut ini mencegah pengambilan karena lonjakan sementara.

    Misalnya, agen dapat memicu pengambilan performa jika mendeteksi bahwa jumlah thread tinggi untuk tiga penyelidikan berturut-turut.

    Jika beberapa kondisi pemicu dikonfigurasi, Cloud SQL akan memulai pengambilan jika salah satu kondisi terpenuhi.

  3. Saat pengambilan dipicu, pengambilan performa akan terhubung ke database dan menjalankan serangkaian perintah diagnostik untuk mengambil snapshot mendetail.

  4. Informasi yang diambil diformat menjadi entri log dan dikirim langsung ke Cloud Logging project untuk instance Cloud SQL di bawah aliran log tertentu yang diberi nama mysql-performance-capture.log.

Periode cooldown dan backoff adaptif

Untuk mencegah overhead sistem dan logging yang berlebihan, pengambilan performa menerapkan periode tunggu setelah pengambilan.

Cooldown standar

Setelah pengambilan berhasil, pengambilan performa akan memulai cooldown standar selama 30 menit. Selama waktu ini, agen tidak akan memicu pengambilan baru meskipun instance berada dalam status masalah yang diperpanjang.

Cooldown dan backoff adaptif

Jika instance berulang kali memicu pengambilan untuk pelanggaran yang sama, pengambilan performa akan menggunakan mekanisme backoff cooldown adaptif. Mekanisme ini membantu membatasi volume logging dan biaya nilai minimum yang salah dikonfigurasi.

Dalam mekanisme ini:

  • Cooldown diperpanjang hingga 24 jam.
  • Pengambilan performa memasuki mode tidur, yang menangguhkan semua pemeriksaan pemicu dan pengambilan diagnostik.
  • Instance dibatasi untuk satu pengambilan performa per hari.

Pemicu pengambilan performa

Bagian ini mencantumkan pemicu yang tersedia untuk pengambilan performa MySQL. Semua pemicu yang tercantum dalam tabel, kecuali jika disebutkan, menggunakan nilai konfigurasi pemeriksaan probingIntervalSeconds dan probeThreshold untuk memvalidasi kondisi pemicu yang berkelanjutan.

Nama kondisi pemicu Nama API Deskripsi Nilai default Rentang konfigurasi
Penggunaan CPU
yang tinggi
cpuUtilizationThresholdPercent Memicu pengambilan saat penggunaan CPU keseluruhan instance database secara konsisten melebihi persentase ini. Hal ini membantu mendeteksi kelebihan beban instance, yang sering kali disebabkan oleh kueri yang tidak efisien dengan pengurutan dan agregasi yang besar, pengindeksan yang tidak memadai, atau konkurensi yang sangat tinggi. Untuk menghindari pengambilan pada lonjakan kecil, konfigurasi default harus berada dalam rentang persentase yang lebih tinggi untuk instance Anda. 0 (dinonaktifkan) 0, atau
10-99 (%)
Penggunaan memori
yang tinggi
memoryUsageThresholdPercent Memicu pengambilan saat penggunaan memori container database secara konsisten melebihi persentase memori yang dialokasikan instance. Pemicu ini dapat membantu mendiagnosis potensi masalah kehabisan memori, kebocoran memori, atau konfigurasi memori yang tidak efisien. Untuk menghindari pengambilan lonjakan kecil, tetapkan default pada ujung rentang yang lebih tinggi untuk instance Anda. 0 (dinonaktifkan) 0, atau
10-99 (%)
Penggunaan file sementara yang tinggi
Tidak dapat dikonfigurasi. Pemicu ini diaktifkan secara otomatis untuk MySQL 8.0 dan yang lebih baru. Secara otomatis memicu pengambilan saat ada peningkatan signifikan dalam penggunaan disk dari file sementara yang dibuat oleh proses MySQL. Sering kali file sementara dihapus, tetapi masih dibuka oleh proses MySQL.

Nilai minimum untuk pemicu ini menggunakan model eskalasi progresif untuk nilai minimum perbedaan. Dimulai dari 100 GB dan berlipat ganda secara berurutan menjadi 200 GB, 400 GB, hingga 1,6 TB setelah setiap cooldown. Dengan menggunakan model eskalasi progresif, pengambilan performa hanya terjadi jika perbedaan penggunaan file sementara meningkat pada tingkat yang tinggi.
Diaktifkan t/a
Panjang daftar histori
historyListLengthThresholdCount Memicu pengambilan saat Panjang Daftar Histori (HLL) InnoDB bertambah melebihi nilai yang dikonfigurasi. HLL yang terus-menerus tinggi menunjukkan bahwa proses penghapusan InnoDB tidak dapat mengikuti dan jumlah transaksi yang tidak dihapus meningkat, sering kali karena transaksi yang berjalan lama. Jumlah yang tinggi ini dapat menyebabkan peningkatan konsumsi penyimpanan dan masalah performa.

Nilai minimum ini bergantung pada workload. Beberapa instance dapat beroperasi dengan cukup baik meskipun dengan HLL yang terus-menerus tinggi. Namun, Anda tetap dapat menggunakan pemicu ini untuk menyoroti potensi masalah seperti pembacaan yang berjalan lama, pernyataan bahasa pengolahan data (DML) yang besar, atau bottleneck thread penghapusan.
0 (dinonaktifkan) 0, atau
10000-10000000
Transaksi yang berjalan lama
transactionDurationThreshold Transaksi dicatat jika transaksi berjalan lebih lama dari durasi yang dikonfigurasi dalam detik. Pemicu ini berguna untuk mengidentifikasi operasi yang mungkin menahan kunci untuk periode yang berlebihan atau menggunakan resource terlalu lama.

Transaksi yang melebihi transactionDurationThreshold dievaluasi setelah setiap interval yang ditentukan dalam konfigurasi probingIntervalSeconds (default 30 detik). Namun, untuk mengelola volume log, detail hingga 10 transaksi yang berjalan lama ini dikirim ke Cloud Logging paling banyak sekali setiap periode tunggu (30 menit). Teks kueri lengkap hingga 1024 byte dari INFORMATION_SCHEMA.INNODB_TRX disertakan dalam setiap entri log untuk 10 transaksi teratas.
3600 (detik) 60 atau lebih
Error thread SQL/IO
replika
Tidak dapat dikonfigurasi. Pemicu ini diaktifkan secara default secara otomatis di semua instance replika dan tidak dapat dinonaktifkan. Memicu pengambilan segera jika thread SQL replikasi atau thread IO pada instance replika mengalami error dan berhenti. Pemicu ini sangat penting untuk mempertahankan integritas replika dan mengidentifikasi kegagalan replikasi.

Pemicu ini tidak menggunakan setelan konfigurasi pemeriksaan apa pun seperti probingIntervalseconds atau probeThreshold untuk memvalidasi kondisi pengambilan performa.
Diaktifkan t/a
Thread yang berjalan runningThreadsThreshold Memicu pengambilan saat jumlah thread aktif yang berjalan berdasarkan variabel status threads_running melebihi nilai yang ditentukan. Misalnya, Anda dapat mengonfigurasi nilai minimum untuk menjalankan pengambilan performa jika jumlah thread aktif yang berjalan lebih tinggi dari 100.

Pemicu ini diperlukan untuk pengambilan performa. Jika Anda tidak mengonfigurasi pemicu ini secara eksplisit, nilai default akan dihitung berdasarkan jumlah vCPU yang termasuk dalam instance.
MIN(600, cpuCount * 20) 10 atau lebih
Detik di belakang
sumber
secondsBehindSourceThreshold Memicu pengambilan saat latensi replikasi pada instance replika baca, yang diukur dalam detik, melebihi nilai yang ditentukan. Anda dapat menggunakan pemicu ini untuk memantau dan mendiagnosis penundaan dalam replikasi. Pemicu ini diaktifkan secara otomatis untuk instance replika. Jika Anda tidak mengonfigurasi pemicu secara eksplisit, nilai defaultnya adalah 900 detik. Sebaiknya konfigurasi nilai pada ujung yang lebih tinggi untuk menghindari pengambilan yang berlebihan dan cooldown yang sering. 900 (detik) 1 atau lebih
Penantian semaphore semaphoreWaitThresholdCount Memicu pengambilan saat jumlah thread yang menunggu semaphore InnoDB internal melebihi nilai pemicu ini yang dikonfigurasi. Metrik lanjutan ini menunjukkan pertentangan, menggunakan mutex atau kunci baca-tulis, dalam mesin penyimpanan InnoDB itu sendiri. Pertentangan umum yang diamati adalah pertentangan Adaptive Hash Index (AHI), pertentangan buffer pool, dan pertentangan IO disk.

Pengambilan juga dipicu jika waktu tunggu maksimum untuk satu semaphore melebihi 200 detik, terlepas dari nilai pemicu ini yang dikonfigurasi.
0 (dinonaktifkan) 0, atau
10-10000
Penantian kunci transaksi
transactionLockWaitThresholdCount Memicu pengambilan saat jumlah transaksi dalam status LOCK WAIT melebihi jumlah yang dikonfigurasi. Sejumlah kecil transaksi dalam status penantian kunci dapat menjadi normal dalam sistem yang sibuk, tetapi jumlah penantian kunci yang terus-menerus tinggi adalah indikator kuat pertentangan kunci tingkat aplikasi, DML yang tidak diindeks, transaksi tidak aktif yang lama, dan pertentangan baris konkurensi yang tinggi yang dapat menurunkan performa dan throughput secara signifikan. 0 (dinonaktifkan) 0, atau
10-10000

Harga

Pengambilan performa tersedia di semua region Cloud SQL tanpa biaya tambahan. Biaya standar hanya berlaku untuk resource database yang mendasarinya. Pengambilan performa menyimpan log di Cloud Logging, yang dapat menimbulkan biaya penyimpanan Cloud Logging tambahan.

Untuk mengetahui informasi selengkapnya tentang harga penyimpanan log di Logging, lihat Harga.

Batasan

  • Anda harus mengaktifkan Query Insight untuk menggunakan pengambilan performa. Jika Anda menonaktifkan Query Insight, pengambilan performa juga akan dinonaktifkan.
  • Pengambilan performa hanya tersedia untuk Cloud SQL untuk MySQL 5.7 dan yang lebih baru.

Langkah berikutnya