Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengelola koneksi
Seiring permintaan untuk aplikasi Anda tumbuh, lalu lintas front-end meningkat. Dalam skenario tipikal, Anda mengatur penskalaan otomatis di tingkat aplikasi untuk menangani ledakan lalu lintas yang masuk. Akibatnya, tingkat aplikasi mulai skala otomatis, dan lebih banyak server aplikasi (instance) ditambahkan untuk memenuhi peningkatan lalu lintas. Karena semua server aplikasi memiliki pengaturan kumpulan koneksi database yang telah dikonfigurasi sebelumnya, jumlah koneksi masuk ke database bertambah sebanding dengan instance yang baru digunakan.
Misalnya, 20 server aplikasi yang dikonfigurasi dengan 200 koneksi database masing-masing akan membuka total 4.000 koneksi database. Jika kumpulan aplikasi menskalakan hingga 200 instance (misalnya, selama jam sibuk), jumlah total koneksi akan mencapai 40.000. Di bawah beban kerja yang khas, sebagian besar koneksi ini kemungkinan tidak digunakan. Tetapi lonjakan koneksi mungkin membatasi kemampuan database Edisi Amazon Aurora MySQL yang kompatibel dengan skala. Ini karena bahkan koneksi idle mengkonsumsi memori dan sumber daya server lainnya, seperti deskriptor file. Aurora MySQL kompatibel biasanya menggunakan lebih sedikit memori daripada MySQL Community Edition untuk mempertahankan jumlah koneksi yang sama. Namun, penggunaan memori untuk koneksi idle masih belum nol.
Variabel konfigurasi
Anda dapat mengontrol jumlah koneksi masuk yang diizinkan ke database Anda dengan dua variabel konfigurasi server utama: max_connections
danmax_connect_errors
.
Variabel konfigurasi max_connections
Variabel konfigurasi max_connections
membatasi jumlah koneksi database untuk setiap instance MySQL. Praktik terbaik adalah mengaturnya sedikit lebih tinggi dari jumlah maksimum koneksi yang Anda harapkan untuk dibuka pada setiap instance database.
Jika Anda juga mengaktifkanperformance_schema
, berhati-hatilah dengan max_connections
pengaturannya. Struktur memori Skema Kinerja berukuran secara otomatis berdasarkan variabel konfigurasi server, termasukmax_connections
. Semakin tinggi Anda mengatur variabel, semakin banyak memori Performance Schema menggunakan. Dalam kasus ekstrim, ini dapat menyebabkan out-of-memory masalah pada jenis instance yang lebih kecil. Perhatikan bahwa mengaktifkan Performance Insights akan secara otomatis mengaktifkan Performance Schema.
Variabel konfigurasi max_connect_errors
Variabel konfigurasi max_connect_errors
menentukan berapa banyak permintaan koneksi terputus berturut-turut yang diizinkan dari host klien tertentu. Jika host klien melebihi jumlah yang ditentukan dari upaya koneksi gagal berturut-turut, server memblokirnya. Upaya koneksi lebih lanjut dari klien itu menghasilkan kesalahan.
Host 'host_name' is blocked because of many connection errors. Unblock with
'mysqladmin flush-hosts'
Jika Anda mengalami kesalahan “host diblokir”, hindari meningkatkan nilai max_connect_errors
variabel. Sebagai gantinya, selidiki penghitung diagnostik server dalam variabel aborted_connects
status dan tabel host_cach
e. Gunakan informasi yang dikumpulkan untuk mengidentifikasi dan memperbaiki klien yang mengalami masalah koneksi. Juga, perhatikan bahwa parameter ini tidak berpengaruh jika skip_name_resolve
diatur ke 1
(default).
Lihat Manual Referensi MySQL untuk detail tentang hal berikut:
Menerapkan penyatuan koneksi
Peristiwa penskalaan dapat menambahkan lebih banyak server aplikasi, yang pada gilirannya dapat menyebabkan server DB melebihi nomor koneksi aktif yang dimuat penuh. Penambahan kumpulan koneksi atau lapisan proxy antara server aplikasi dan database bertindak seperti corong, mengurangi jumlah total koneksi pada database. Tujuan utama proxy adalah penggunaan kembali koneksi database dengan cara multiplexing.
Di satu sisi, proxy terhubung ke database dengan jumlah koneksi yang terkontrol. Di sisi lain, proxy menerima koneksi aplikasi. Ini juga menyediakan fitur tambahan, seperti cache kueri, buffering koneksi, penulisan ulang kueri dan perutean, dan penyeimbangan beban. Lapisan kolam koneksi perlu dikonfigurasi untuk menjaga jumlah maksimum koneksi ke database di bawah nomor yang dimuat penuh. Amazon RDS Proxy adalah proxy
Anda juga dapat menjelajahi proxy pihak ketiga berikut yang dapat digunakan dengan Aurora MySQL kompatibel:
Hindari badai koneksi
Pertimbangkan bagaimana kumpulan koneksi Anda berperilaku jika database kelebihan beban atau replika jatuh terlalu jauh di belakang node utama. Saat mengonfigurasi server proxy atau kumpulan koneksi, pastikan Anda tidak mengatur ulang seluruh kumpulan koneksi berdasarkan respons basis data yang lambat (disebabkan oleh masalah perangkat keras atau penyimpanan yang mendasarinya atau kendala sumber daya DB).
Tiba-tiba memulai ratusan koneksi menghasilkan badai koneksi karena sejumlah besar permintaan untuk koneksi baru ke database semuanya dimulai pada saat yang sama. Badai itu intensif sumber daya. Membuat koneksi database baru di MySQL adalah operasi yang mahal karena backend bertukar beberapa paket jaringan untuk jabat tangan awal, memunculkan proses baru, mengalokasikan memori, menangani otentikasi, dan sebagainya. Jika sejumlah besar permintaan diterima dalam waktu singkat, database dapat tampak tidak responsif.
MySQL memiliki mekanisme untuk melindungi terhadap lonjakan permintaan koneksi seperti itu. back_log
Variabel dapat diatur ke jumlah permintaan yang dapat ditumpuk selama waktu singkat sebelum MySQL sesaat berhenti menjawab permintaan baru. Nilai diberlakukan oleh utas penanganan koneksi, yang dengan sendirinya mungkin kewalahan oleh badai koneksi. Untuk informasi selengkapnya, lihat Manual Referensi MySQL
Jika koneksi Anda dikonfigurasi untuk mengatur ulang ketika database lambat, Anda akan memulai siklus lagi dan lagi. Demikian pula, jika Anda mengantisipasi peningkatan mendadak dalam lalu lintas database pada waktu-waktu tertentu di siang hari (misalnya, ketika pasar saham terbuka), panaskan dulu kumpulan koneksi Anda sehingga Anda tidak mencoba membuka banyak koneksi pada saat yang sama ketika beban lalu lintas tinggi dimulai.