Topik ini menjelaskan cara memecahkan masalah yang menyebabkan jumlah thread aktif berlebihan pada instance ApsaraDB RDS for MySQL.
Informasi latar belakang
Jumlah thread aktif atau koneksi aktif adalah metrik penting untuk mengukur beban pada instance RDS Anda. Pada instance RDS yang sehat, jumlah thread aktif biasanya kurang dari 10. Jika instance RDS memiliki spesifikasi tinggi dan permintaan per detik (QPS) tinggi, jumlah tersebut dapat meningkat menjadi 20 hingga 30. Namun, jika jumlahnya melebihi 100 atau 1.000, kecepatan respons instance RDS terhadap query akan menurun karena penumpukan query SQL. Dalam kasus parah, instance RDS mungkin tidak merespons dan berhenti memproses query SQL.
Lihat jumlah thread aktif
Anda dapat masuk ke Konsol ApsaraDB RDS dan menggunakan salah satu metode berikut untuk melihat jumlah thread aktif:
Pemantauan dan Peringatan
Di panel navigasi sebelah kiri, klik Monitoring and Alerts. Pada tab Standard Monitoring, klik Standard View untuk melihat jumlah thread aktif.
DAS
Di panel navigasi sebelah kiri, pilih . Pada halaman yang muncul, klik tab Performance Trends untuk melihat jumlah thread aktif. Jika jumlahnya terlalu besar, beberapa sesi mungkin diblokir.
Memecahkan masalah penumpukan query SQL lambat
Gejala
Jika jumlah thread aktif meningkat, Anda dapat mengeksekusi pernyataan
SHOW PROCESSLISTuntuk memeriksa apakah ada query SQL lambat. Jika sejumlah besar query SQL memerlukan ApsaraDB RDS untuk memindai sejumlah baris yang terlalu besar, jumlah thread aktif dapat meningkat.Anda juga dapat memilih untuk melihat informasi tentang query SQL lambat.
Solusi
Aktifkan fitur pembatasan SQL atau hentikan sesi untuk mengurangi dampak dari query SQL lambat. Untuk informasi lebih lanjut, lihat Pembatasan SQL.
Memecahkan masalah cache tabel
Gejala
Jika instance RDS Anda mengalami QPS sangat tinggi atau memproses sejumlah besar tabel, sejumlah besar query SQL beralih ke status
Opening tablekarena ukuran cache tabel yang tidak mencukupi.Solusi
Tingkatkan nilai parameter table_open_cache dan table_open_cache_instances. Rekonfigurasi parameter table_open_cache tidak memerlukan restart instance RDS. Namun, rekonfigurasi parameter table_open_cache_instances memerlukan restart instance RDS.
Memecahkan masalah penguncian metadata
Gejala
Pada fase Persiapan dan Komitmen, pernyataan DDL perlu mendapatkan kunci metadata pada tabel. Jika tabel terlibat dalam transaksi yang belum dikomit atau query SQL lambat, pernyataan DDL akan diblokir. Hal ini dapat memblokir lebih banyak query SQL, yang kemudian beralih ke status
Menunggu kunci metadata tabel. Akibatnya, jumlah thread aktif meningkat.Solusi
Hentikan semua transaksi yang belum dikomit, query SQL lambat, dan pernyataan DDL yang sedang berlangsung.
Memecahkan konflik kunci baris
Gejala
Jika nilai metrik Innodb_row_lock_waits dan Innodb_row_lock_time besar, konflik kunci baris mungkin terjadi.
Di panel navigasi sebelah kiri, pilih . Pada halaman yang muncul, klik tab Performance Trends. Kemudian, Anda dapat melihat metrik di bagian Row Lock.
Solusi
Eksekusi pernyataan
SHOW ENGINE INNODB STATUS;untuk memeriksa apakah banyak sesi berada dalam statusLock wait. Jika banyak sesi berada dalam status Lock wait, kemungkinan besar terjadi konflik kunci baris yang parah. Untuk mengurangi konflik ini, gunakan semua metode yang disarankan. Sebagai contoh, optimalkan pembaruan data panas, kurangi ukuran transaksi, dan minimalkan waktu yang diperlukan untuk mengomitm transaksi.