Topik ini menjelaskan penyebab umum kegagalan akses database dan cara memecahkan masalah tersebut di Function Compute.
Pemecahan masalah penyebab umum
Akses database kadang-kadang gagal
Jika kegagalan akses database terjadi sesekali, ikuti langkah-langkah berikut untuk memecahkan penyebabnya:
Periksa apakah Anda menggunakan
end()alih-alihdestroy()untuk memutuskan koneksi database.Instance fungsi secara otomatis dihapus setelah tidak aktif selama sekitar 2 hingga 5 menit. Jika Anda menggunakan metode
end(), server MySQL diputuskan setelah database menerima hasil query. Jika database tidak diputuskan dengan benar, koneksi berikutnya akan mengalami waktu habis.Periksa apakah grup keamanan dikonfigurasi saat Anda mengakses database melalui VPC.
Jika grup keamanan dikonfigurasi saat Anda mengakses database, koneksi fungsi mungkin tidak stabil. Kami menyarankan Anda mengonfigurasi Daftar putih alamat IP saat mengakses database.
Periksa penyebab kegagalan akses dengan merujuk pada Koneksi Database Terus-Menerus Gagal.
Koneksi database terus-menerus gagal
Jika koneksi terus-menerus gagal saat Anda mengakses database, lakukan langkah-langkah berikut untuk memecahkan penyebabnya:
Kueri catatan koneksi di database yang diminta dan periksa apakah permintaan koneksi dari Function Compute ada dalam periode waktu yang sesuai.
Periksa apakah nama pengguna dan kata sandi yang digunakan untuk mengakses database sudah benar.
Jika nama pengguna dan kata sandi benar, lanjutkan ke langkah 3.
Jika nama pengguna atau kata sandi tidak valid, masukkan nama pengguna dan kata sandi yang valid.
Masuk ke instance dan lihat apakah Anda dapat menggunakan perintah
telnetuntuk terhubung ke database.Jika koneksi dapat dibuat menggunakan telnet, lanjutkan ke langkah 4.
Jika koneksi tidak dapat dibuat menggunakan telnet, periksa konfigurasi jaringan. Untuk informasi lebih lanjut, lihat Pemecahan Masalah Jaringan.
Periksa apakah logika kode fungsi Anda sudah benar.
Jika masalah tetap ada setelah Anda melakukan pemecahan masalah menggunakan metode di atas, bergabunglah dengan grup pengguna DingTalk 11721331 untuk mendapatkan dukungan teknis.
Pemecahan masalah jaringan
Akses Database Melalui VPC
Pastikan bahwa instance database yang dibuat berada di wilayah yang sama dengan fungsi yang mengakses database.
Jika kesalahan
AccessDenieddilaporkan dan kode kesalahan adalah 403, periksa apakah Anda telah memberikan izin pada antarmuka jaringan elastis (ENI).Jika kesalahan
InvalidArgumentdilaporkan dan kode kesalahan adalah 400, periksa apakah konfigurasi untuk VPC, vSwitch, dan Security Group valid.Periksa apakah daftar putih alamat IP dikonfigurasikan untuk database. Jika daftar putih dikonfigurasikan, pastikan blok CIDR VPC pribadi dan blok CIDR vSwitch dikonfigurasikan. Anda dapat menambahkan 0.0.0.0/0 ke daftar putih untuk mengizinkan akses dari semua alamat IP.
Pastikan grup keamanan mengizinkan lalu lintas keluar dari blok CIDR pribadi dan port database.
Jika kesalahan
ResourceExhausteddilaporkan dan kode kesalahan adalah 429, periksa apakah alamat IP yang tersedia di blok CIDR IP vSwitch tidak mencukupi. Panjang awalan blok CIDR yang dikonfigurasi secara otomatis adalah 24, dan jumlah total alamat IP yang tersedia adalah 252. Jika jumlah instance terlalu besar, batas mungkin tercapai dan Anda harus secara manual memodifikasi blok CIDR vSwitch dan grup keamanan.
Akses Database Melalui Internet
Pastikan akses Internet diaktifkan untuk layanan tersebut. Untuk informasi lebih lanjut, lihat Konfigurasi Pengaturan Jaringan.
Jika daftar putih alamat IP statis dikonfigurasikan untuk database, pastikan alamat IP publik statis dikonfigurasikan di Function Compute. Di Function Compute, instance yang menjalankan fungsi dialokasikan secara dinamis oleh Function Compute, dan alamat IP tidak tetap. Untuk mengakses database melalui Internet, Anda harus mengonfigurasi alamat IP publik. Untuk informasi lebih lanjut, lihat Konfigurasi Alamat IP Publik Statis.
Masalah Jaringan di Sisi Database
Anda dapat mengonfigurasi lingkungan jaringan yang mirip dengan lingkungan jaringan Function Compute di layanan lain. Kemudian, periksa apakah Anda dapat terhubung ke database menggunakan perintah
telnet. Jika koneksi dapat dibuat, jaringan di sisi database normal.