Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

redis bgsave gagal karena fork Tidak dapat mengalokasikan memori

Lebih khusus lagi, dari FAQ Redis

Skema penyimpanan latar belakang Redis bergantung pada semantik copy-on-write dari fork dalam sistem operasi modern:Redis forks (membuat proses anak) yang merupakan salinan persis dari induknya. Proses anak membuang DB pada disk dan akhirnya keluar. Secara teori anak harus menggunakan memori sebanyak orang tua menjadi salinan, tetapi sebenarnya berkat semantik copy-on-write yang diterapkan oleh sebagian besar sistem operasi modern, proses induk dan anak akan berbagi halaman memori yang sama. Sebuah halaman akan diduplikasi hanya jika halaman tersebut berubah pada anak atau induknya. Karena secara teori semua halaman dapat berubah saat proses anak disimpan, Linux tidak dapat mengetahui sebelumnya berapa banyak memori yang akan digunakan anak, jadi jika pengaturan overcommit_memory disetel ke nol garpu akan gagal kecuali ada RAM kosong sebanyak diperlukan untuk benar-benar menduplikasi semua halaman memori induk, akibatnya jika Anda memiliki set data Redis sebesar 3 GB dan hanya 2 GB memori kosong, itu akan gagal.

Menyetel overcommit_memory ke 1 mengatakan Linux untuk bersantai dan melakukan fork dengan cara alokasi yang lebih optimis, dan ini memang yang Anda inginkan untuk Redis.

Redis tidak membutuhkan memori sebanyak yang diperkirakan OS untuk menulis ke disk, jadi mungkin akan gagal fork terlebih dahulu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Acara redis keyspace tidak diaktifkan

  2. skrip redis lua vs. panggilan tunggal

  3. Redis:Jumlah SKOR dalam Kumpulan Terurut

  4. bagaimana cara membunuh klien redis yang menganggur?

  5. Redis:Untuk mengatur batas waktu untuk pasangan nilai kunci di Set