全部产品
Search
文档中心

ApsaraDB RDS:Apa yang harus saya lakukan jika jumlah koneksi ke sebuah instans ApsaraDB RDS untuk MySQL mencapai batas maksimum?

更新时间:Jul 02, 2025

Deskripsi masalah

Jumlah koneksi ke sebuah instans ApsaraDB RDS untuk MySQL telah mencapai batas maksimum, sehingga klien tidak dapat terhubung ke instans RDS.

Penyebab

  • Banyaknya koneksi idle.

  • Banyaknya koneksi aktif.

Solusi

Catatan
  • Sebelum melakukan operasi berisiko tinggi seperti memodifikasi konfigurasi atau data instans, pastikan Anda memeriksa kemampuan pemulihan bencana dan toleransi kesalahan instans tersebut untuk menjamin keamanan data.

  • Sebelum memodifikasi konfigurasi atau data instans, seperti Elastic Compute Service (ECS) atau instans RDS, buat snapshot atau aktifkan pencadangan. Sebagai contoh, Anda dapat mengaktifkan pencadangan log untuk instans RDS.

  • Jika Anda memberikan izin pada informasi sensitif atau mengirimkan informasi sensitif di Konsol Manajemen Alibaba Cloud, segera modifikasi informasi tersebut. Informasi sensitif meliputi nama pengguna dan kata sandi.

Identifikasi masalah

Di konsol ApsaraDB RDS, akses halaman Monitoring and Alerts dari instans RDS Anda. Periksa metrik Sesi untuk menentukan apakah masalah koneksi disebabkan oleh banyaknya koneksi idle atau koneksi aktif. Anda dapat memeriksa nilai parameter mysql.active_session.

Solusi untuk masalah yang disebabkan oleh koneksi idle berlebihan

Penyebab

  • Aplikasi Anda, seperti aplikasi Java, menggunakan koneksi persisten dengan kolam koneksi yang dikonfigurasikan. Jika Anda menetapkan nilai besar untuk jumlah awal koneksi dalam kolam koneksi dan memulai aplikasi, beberapa koneksi idle akan dibuat ke instans RDS.

  • Aplikasi Anda, seperti aplikasi PHP, menggunakan koneksi singkat namun tidak secara eksplisit menutup koneksi setelah query selesai.

Detail Solusi

  • Gunakan manajemen sesi di konsol ApsaraDB RDS, Data Management (DMS), atau perintah kill untuk menghentikan sesi idle. Untuk detail lebih lanjut, lihat Bagaimana cara menghentikan sesi pada instans ApsaraDB RDS untuk MySQL?

  • Jika aplikasi Anda menggunakan koneksi persisten, aktifkan fitur penggunaan ulang kolam koneksi dan deteksi koneksi.

  • Jika aplikasi Anda menggunakan koneksi singkat, modifikasi kode aplikasi untuk menutup koneksi setelah query selesai.

  • Untuk koneksi dalam mode non-interaktif, masuk ke konsol ApsaraDB RDS dan kurangi nilai wait_timeout pada halaman Parameters. Parameter wait_timeout menentukan periode timeout untuk koneksi dalam mode non-interaktif. Nilai default adalah 86.400 detik, setara dengan 24 jam. Jika koneksi non-interaktif idle lebih lama daripada nilai wait_timeout, instans RDS akan secara otomatis menghentikan koneksi tersebut.

  • Untuk koneksi dalam mode interaktif, masuk ke konsol ApsaraDB RDS dan kurangi nilai interactive_timeout pada halaman Parameters. Parameter interactive_timeout menentukan periode timeout untuk koneksi dalam mode interaktif. Nilai default adalah 7.200 detik (2 jam). Jika koneksi interaktif idle lebih lama daripada nilai interactive_timeout, instans RDS akan secara otomatis menghentikan koneksi tersebut.

Catatan
  • Jika jumlah koneksi ke instans RDS mencapai batas maksimum, Anda tidak dapat menghubungkan aplikasi Anda ke instans RDS menggunakan DMS atau metode lainnya. Jika aplikasi Anda menggunakan koneksi persisten, tetapkan jumlah maksimum koneksi dalam kolam koneksi ke nilai yang lebih kecil daripada jumlah maksimum koneksi yang didukung oleh tipe instans. Cadangkan beberapa koneksi untuk operasi manajemen DMS atau lainnya. Untuk memperbaiki kegagalan koneksi, kurangi nilai wait_timeout di konsol ApsaraDB RDS agar instans RDS dapat menghentikan koneksi idle yang timeout.

  • Dalam kebanyakan kasus, aplikasi terhubung ke instans RDS dalam mode non-interaktif. Untuk mengetahui mode koneksi, periksa konfigurasi koneksi aplikasi Anda. Anda dapat menentukan konstanta MYSQL_CLIENT_INTERACTIVE dalam fungsi mysql_connect() untuk mengaktifkan mode interaktif pada aplikasi PHP.

  • Perubahan pada nilai wait_timeout dan interactive_timeout hanya berlaku untuk koneksi baru yang dibuat setelah perubahan tersebut. Untuk koneksi yang sudah ada sebelum perubahan, pengaturan asli tetap digunakan.

Solusi untuk masalah yang disebabkan oleh banyaknya koneksi aktif

Penyebab

  • Peningkatan jumlah query lambat.

  • Adanya lock waits seperti InnoDB lock waits dan metadata lock waits.

  • Penggunaan CPU tinggi.

  • IOPS tinggi.

Detail Solusi