Rumah >pangkalan data >Redis >Bagaimana untuk menyelesaikan limpahan penimbal Redis
Penimbal ialah sebahagian daripada ruang ingatan. Dengan kata lain, sejumlah ruang storan dikhaskan dalam ruang memori ini digunakan untuk menampan data input atau output ini dipanggil penimbal.
Dalam Redis, terdapat tiga senario utama di mana konsep penimbal digunakan.
Apabila berkomunikasi antara klien dan pelayan, ia digunakan untuk menyimpan sementara data arahan yang dihantar oleh klien, atau apabila hasil data yang dikembalikan oleh pelayan kepada klien disegerakkan antara nod induk dan hamba, Redis Gunakan penimbal untuk menyimpan sementara arahan tulis dan data yang diterima oleh nod induk Apabila Redis melakukan kegigihan AOF, Redis juga menggunakan konsep penimbal untuk mengelakkan penulisan cakera yang kerap
Konsep penimbal pada asalnya digunakan oleh sistem pengendalian. untuk memudahkan Percanggahan antara ketidakpadanan kelajuan antara peranti CPU dan I/O diperkenalkan dengan menambah baik keselarian peranti CPU dan I/O.
Ketidakpadanan antara peranti berkelajuan tinggi dan peranti berkelajuan rendah pasti akan menyebabkan peranti berkelajuan tinggi menghabiskan masa menunggu peranti berkelajuan rendah. Konsep penimbal boleh menyelesaikan masalah ini dengan baik. Penampan juga merupakan penjelmaan penting model pengeluar-pengguna.
Jika qubf-free habis, ia akan menyebabkan limpahan penimbal input pelanggan, pemprosesan Redis Kaedahnya adalah untuk menutup sambungan pelanggan Hasilnya ialah program perniagaan tidak boleh mengakses data.
Biasanya, terdapat banyak sambungan pelanggan apabila jumlah memori yang diduduki oleh sambungan pelanggan melebihi memori maksimum Redis Apabila dikonfigurasikan, Redis akan dicetuskan untuk melakukan penghapusan data, yang akan menjejaskan prestasi capaian program perniagaan.
Malah berbilang pelanggan boleh menyebabkan Redis mengambil terlalu banyak memori, dan juga boleh menyebabkan masalah limpahan memori, yang boleh menyebabkan Redis ranap.
Terdapat dua lagi buffer klien, buffer input dan buffer output, yang kedua-duanya direka untuk menyelesaikan masalah ketidakkonsistenan dalam kelajuan penghantaran dan pemprosesan permintaan antara klien dan pelayan Padan dengan apa yang ditetapkan.
Penimbal input menyimpan sementara arahan yang dihantar oleh pelanggan Terdapat dua sebab biasa limpahan:
ditulis kepada BigKey, seperti Jutaan cincang. atau data agregat ditulis pada satu masa, melebihi saiz penimbal Pelayan memproses permintaan terlalu perlahan, menyebabkan penyekatan dan tidak dapat memproses permintaan dalam masa Akibatnya, permintaan yang dihantar oleh pelanggan terkumpul dalam banyak.
Penimbal output menyimpan sementara data untuk dikembalikan kepada klien oleh utas utama Redis.
Data ini termasuk jawapan OK yang ringkas dan bersaiz tetap (contohnya, melaksanakan arahan SET) atau mesej ralat, serta hasil pelaksanaan yang tidak ditetapkan saiznya dan mengandungi data khusus (contohnya, melaksanakan Arahan HGET)
Terdapat tiga sebab biasa limpahan penimbal output:
Mengembalikan sejumlah besar hasil BigKey Melaksanakan beberapa arahan yang tidak munasabah Tetapan saiz penimbal yang tidak munasabah
Daripada input dan output penimbal Berdasarkan punca biasa limpahan, BigKey ialah punca limpahan yang paling mungkin, jadi kita harus cuba mengelak daripada menggunakan BigKey.
Untuk penimbal input, kerana tiada cara untuk menukar saiznya (1G lalai bagi setiap pelanggan), kami hanya boleh mengawal kelajuan penghantaran dan pemprosesan arahan untuk mengelakkan sekatan sebanyak mungkin.
Untuk penimbal output, elakkan menggunakan beberapa arahan yang mengembalikan sejumlah besar hasil, seperti KEYS, MONITOR, dll. Pada masa yang sama, anda boleh mengelakkan limpahan dengan melaraskan saiz penimbal output.
Penimbal salinan digunakan untuk menyalin antara nod induk Redis dan hamba. Kerana replikasi data antara nod induk dan hamba termasuk replikasi penuh dan replikasi tambahan. Oleh itu, penimbal salinan juga dibahagikan kepada dua jenis: penimbal salinan dan penimbal tunggakan salinan.
Semasa proses replikasi penuh, nod induk akan terus menerima permintaan arahan tulis yang dihantar oleh klien semasa menghantar fail RDB ke nod hamba. Arahan tulis ini mula-mula akan disimpan dalam penimbal replikasi, dan akan dihantar ke nod hamba dan dilaksanakan selepas pemindahan fail RDB selesai. Untuk memastikan penyegerakan data antara nod induk dan nod hamba, setiap nod hamba mengekalkan penimbal replikasi pada nod induk.
Untuk penimbal salinan, jika mengambil masa yang lama untuk memindahkan fail RDB dari pustaka utama dan memuatkan fail RDB dari pustaka hamba, dan pada masa yang sama, perpustakaan utama menerima banyak operasi arahan tulis, ia akan menyebabkan replikasi Penampan telah diisi dan melimpah.
Untuk mengelakkan limpahan penimbal salinan, di satu pihak, kami boleh mengawal jumlah data yang disimpan oleh nod induk, yang boleh mempercepatkan pemindahan fail RDB dan masa memuatkan perpustakaan hamba untuk mengelakkan pengumpulan yang berlebihan daripada penimbal salinan.
Anda juga boleh menetapkan saiz penimbal replikasi dengan lebih munasabah untuk mengelakkan limpahan berdasarkan volum data nod induk, tekanan beban tulis nod induk dan saiz memori nod induk itu sendiri untuk mengelakkan limpahan. Di samping itu, memandangkan nod induk akan menyediakan Nod menetapkan penimbal replikasi Jika bilangan nod hamba dalam kluster adalah sangat besar, overhed memori nod induk akan menjadi sangat besar, jadi kita harus cuba mengelakkan nod induk. mempunyai terlalu banyak nod hamba.
Semasa proses replikasi tambahan, apabila nod induk dan nod hamba melakukan penyegerakan biasa, arahan tulis akan disimpan sementara dalam penimbal replikasi. Jika pemutusan rangkaian berlaku antara nod hamba dan nod induk, operasi arahan yang belum lagi direplikasi boleh disegerakkan daripada penimbal tunggakan replikasi selepas nod hamba disambungkan semula.
Perlu diingatkan bahawa penimbal tunggakan salinan ialah penimbal cincin dengan saiz terhad.
Apabila nod induk mengisi penimbal tunggakan replikasi, ia akan menimpa data arahan lama dalam penimbal. Pada masa ini, data nod induk dan hamba akan menjadi tidak konsisten.
Untuk menangani masalah ini, penyelesaian umum adalah untuk meningkatkan saiz penimbal tunggakan salinan Saiz ini secara amnya boleh dikira menggunakan
缓冲区大小=(主库写入命令速度 * 操作大小 - 主从库间网络传输命令速度 * 操作大小)* 2
Jika bilangan permintaan serentak adalah sangat besar, laraskan. penimbal Jika kaedah saiz kawasan tidak dapat diselesaikan, maka anda boleh mempertimbangkan untuk menggunakan kaedah gugusan keping untuk menyelesaikannya
Penimbal AOF ialah penimbal yang ditetapkan oleh Redis dalam AOF kegigihan. penimbal AOF juga mempunyai dua jenis penimbal AOF dan penimbal tulis semula AOF.
Kita semua tahu bahawa walaupun untuk pemacu keadaan pepejal, kelajuan baca dan tulisnya jauh berbeza daripada memori. Penampan AOF terutamanya ditetapkan oleh Redis untuk menyelesaikan masalah penyegerakan antara kelajuan pelaksanaan perintah proses utama dan kelajuan penulisan cakera Penimbal AOF secara berkesan boleh mengelakkan pembacaan dan penulisan cakera keras secara kerap, dengan itu meningkatkan prestasi. Apabila melakukan kegigihan AOF, Redis akan menulis arahan pada penimbal AOF dahulu, dan kemudian menulisnya pada fail AOF cakera keras mengikut dasar tulis balik.
Limpahan penimbal AOF mungkin berkaitan dengan kelajuan penulisan cakera atau strategi tulis balik AOF Apabila sebilangan besar arahan tertunggak dalam penimbal AOF dan melebihinya Selepas menetapkan ambang, limpahan penimbal akan berlaku Untuk mengelakkan masalah ini, kita boleh menyelesaikannya dengan melaraskan strategi tulis balik atau melaraskan saiz penimbal AOF.
Penimbal tulis semula AOF ialah apabila Redis melakukan penulisan semula AOF dalam proses anak Apabila proses induk menerima arahan baharu, ia akan menulis arahan Masukkan penulisan semula AOF penimbal, tunggu sehingga penulisan semula subproses selesai, dan tambahkan arahan penimbal tulis semula AOF pada fail AOF baharu.
Limpahan penimbal tulis semula AOF adalah berkaitan dengan bilangan arahan yang diproses oleh proses utama semasa penulisan semula AOF Apabila tempoh penulisan semula AOF, proses utama Redis memproses a bilangan arahan yang besar, arahan ini akan ditulis ke dalam penimbal tulis semula AOF Apabila ambang yang ditetapkan melebihi, ia akan menyebabkan limpahan.
Untuk mengelakkan limpahan penimbal tulis semula AOF, kami juga boleh menyelesaikannya dengan melaraskan saiz penimbal tulis semula AOF.
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan limpahan penimbal Redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!