Gejala
Instans ApsaraDB RDS for MySQL dapat mengalami penggunaan IOPS tinggi. Topik ini menjelaskan penyebab utama dan memberikan solusinya.
Penyebab
-
Instans memiliki memori yang tidak mencukupi untuk caching data atau sorting, sehingga menyebabkan I/O fisik berlebihan.
-
Kueri yang tidak efisien melakukan pemindaian terhadap jumlah baris yang berlebihan.
Solusi
Anda dapat menggunakan salah satu atau kedua metode berikut untuk mengatasi penggunaan IOPS tinggi:
-
Hasilkan laporan diagnosis untuk instans (direkomendasikan).
-
Hentikan kueri bermasalah.
Lihat laporan diagnosis terkini untuk instans
-
Di Konsol DMS, login ke database.
-
Pilih Performance > One-click diagnosis.
-
Di Konsol DAS, Anda dapat melihat sesi real-time, deadlock, dan kueri lambat dari instans tersebut.
Halaman ikhtisar One-click diagnosis menampilkan status kesehatan database dalam bentuk topologi hierarkis. Selain sesi real-time, deadlock, dan kueri lambat, halaman ini juga menyediakan beberapa panel diagnostik lainnya, yaitu: active sessions (jumlah koneksi, maksimum koneksi yang diizinkan, dan penggunaan koneksi); resource diagnosis (utilisasi CPU, utilisasi memori, dan penggunaan IOPS); QPS (nilai rata-rata dan puncak, serta laju pertumbuhan bulan-ke-bulan/tahun-ke-tahun); all SQL; dan space usage (penggunaan disk, ruang tersedia yang tersisa, dan pertumbuhan rata-rata harian). Panel deadlocks dan slow queries disorot untuk membantu Anda mengidentifikasi masalah dengan cepat.
-
Klik tautan detail modul untuk melihat dan menerapkan optimasi.
Hentikan kueri bermasalah
Anda dapat menemukan dan menghentikan kueri bermasalah dengan menggunakan fitur session instans di Konsol DMS atau dengan menjalankan perintah. Kami merekomendasikan agar Anda menghentikan kueri yang memiliki pembacaan fisik tinggi (Physical_sync_read dan Physical_async_read).
-
Jika instans RDS mencapai jumlah koneksi maksimum, Anda tidak dapat login ke instans tersebut melalui Konsol DMS atau tool command-line MySQL.
-
Jika Anda tidak dapat terhubung melalui Konsol DMS atau tool command-line MySQL, atur parameter
wait_timeout(dalam detik) ke nilai kecil, misalnya 60, di Konsol RDS. Tindakan ini akan menutup koneksi yang telah idle lebih dari 60 detik, sehingga membebaskan sumber daya dan memungkinkan Anda login ke instans.
Hentikan kueri bermasalah menggunakan fitur session instans
Jika laporan diagnosis tidak tersedia atau Anda belum dapat segera menerapkan rekomendasinya, hentikan terlebih dahulu kueri bermasalah menggunakan fitur session instans di Konsol DMS.
Pastikan aplikasi telah berhenti mengirimkan kueri bermasalah tersebut terlebih dahulu. Jika tidak, kueri tersebut akan muncul kembali setelah dihentikan.
-
Di Konsol DMS, login ke database.
-
Pilih Performance > Instance session.
-
Pilih sesi yang ingin dihentikan dan klik Kill Selected.
Hentikan kueri bermasalah menggunakan perintah
-
Terhubung ke instans menggunakan tool command-line MySQL.
-
Jalankan perintah berikut untuk melihat detail sesi dan mengidentifikasi sesi bermasalah:
-
Jalankan perintah
show processlist;.
-
Jika terdapat banyak sesi yang sedang berjalan, jalankan perintah
show full processlist;untuk melihat teks kueri lengkap.
-
-
Jalankan perintah
kill [$ID]untuk menghentikan sesi tersebut. Ganti [$ID] dengan ID sesi dari kolomIdpada output perintah.
Berlaku untuk
-
ApsaraDB RDS for MySQL