Rumah >pangkalan data >Redis >Mari kita bincangkan tentang potensi titik sekatan AOF dalam Redis (ringkasan)

Mari kita bincangkan tentang potensi titik sekatan AOF dalam Redis (ringkasan)

青灯夜游
青灯夜游ke hadapan
2021-12-24 10:05:471909semak imbas

Apakah titik sekatan yang berpotensi AOF? Artikel berikut meringkaskan beberapa titik sekatan yang berpotensi untuk AOF dalam Redis. Saya harap ia akan membantu anda!

Mari kita bincangkan tentang potensi titik sekatan AOF dalam Redis (ringkasan)

Apakah titik penyekat AOF yang berpotensi?

1 Apabila Redis menggunakan sub-proses garpu untuk menulis semula AOF fail, terdapat potensi risiko Menyekat

1), proses anak garpu

proses anak garpu, garpu pasti akan menyekat benang utama pada masa ini (perhatikan bahawa garpu akan bukan satu kali Salin semua data memori ke proses anak), garpu menggunakan mekanisme Salin Pada Tulis yang disediakan oleh sistem pengendalian, untuk mengelakkan masalah sekatan jangka panjang yang disebabkan oleh menyalin sejumlah besar memori data sekali gus kepada proses anak . [Cadangan berkaitan: Tutorial video Redis]

Tetapi proses anak fork perlu menyalin struktur data yang diperlukan bagi proses tersebut, salah satunya ialah menyalin jadual halaman memori (memori maya dan jadual indeks pemetaan memori fizikal), proses penyalinan ini akan menggunakan banyak sumber CPU Keseluruhan proses akan disekat sebelum salinan selesai bergantung pada saiz memori keseluruhan contoh > Lebih besar contoh, lebih besar jadual halaman memori Lebih lama garpu disekat.

Selepas salinan jadual halaman memori selesai, proses anak dan proses induk menghala ke ruang alamat memori yang sama, walaupun proses anak dijana pada masa ini, ia tidak memohon saiz memori yang sama dengan proses induk.

Jadi bilakah memori proses ibu bapa dan anak akan benar-benar dipisahkan?

Seperti namanya, "salinan realistik" bermaksud data sebenar dalam ingatan sebenarnya disalin apabila penulisan berlaku Semasa proses ini, proses induk juga mungkin berisiko disekat, iaitu senario yang diterangkan di bawah.

2), Senario di mana proses induk menulis semasa AOF menulis semula

Proses anak bercabang menghala ke memori yang sama dengan alamat proses induk ruang, pada masa ini proses kanak-kanak boleh melakukan penulisan semula AOF dan menulis semua data dalam memori ke fail AOF.

Walau bagaimanapun, proses induk masih akan mempunyai trafik yang ditulis pada masa ini Jika proses induk mengendalikan kunci yang sedia ada, maka pada masa ini proses induk sebenarnya akan menyalin data memori yang sepadan dengan kunci dan memohon. yang baru. Dengan cara ini, secara beransur-ansur, data memori proses bapa dan anak mula terpisah, dan proses bapa dan anak secara beransur-ansur mempunyai ruang ingatan bebas mereka sendiri. Oleh kerana peruntukan memori diperuntukkan dalam unit halaman, lalai ialah 4k Jika proses induk mengendalikan kunci besar pada masa ini, ia akan mengambil masa yang lebih lama untuk memohon semula blok memori yang besar, yang mungkin menyebabkan risiko disekat.

Selain itu, jika sistem pengendalian menghidupkan

mekanisme halaman memori besar (Halaman Besar, saiz halaman 2M), maka kebarangkalian untuk menyekat apabila proses induk menggunakan memori akan menjadi sangat besar. meningkat, jadi dalam mesin Redis Mekanisme Halaman Besar perlu dimatikan. Setiap kali Redis bercabang untuk menjana penulisan semula RDB atau AOF selesai, anda boleh melihat dalam log Redis berapa banyak ruang memori yang telah digunakan semula oleh proses induk.

3) Mengapakah AOF menulis semula tidak menggunakan semula log AOF sendiri

Tulisan semula AOF tidak menggunakan semula log AOF sendiri:

  • Salah satu sebab ialah menulis fail yang sama antara proses ibu bapa dan anak sudah pasti akan menyebabkan masalah persaingan Mengawal persaingan bermakna ia akan menjejaskan prestasi proses induk.

  • Kedua, jika proses penulisan semula AOF gagal, maka fail AOF asal adalah bersamaan dengan tercemar dan tidak boleh dipulihkan dan digunakan. Oleh itu, Redis AOF menulis semula fail baru Jika penulisan semula gagal, hanya padamkan fail itu secara langsung. Selepas penulisan semula selesai, gantikan sahaja fail lama.

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati:

Video Pengaturcaraan! !

Atas ialah kandungan terperinci Mari kita bincangkan tentang potensi titik sekatan AOF dalam Redis (ringkasan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam