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

memori redis dan lonjakan cpu

Dari bereksperimen lebih lanjut dengan ini dan membaca tentang ketekunan redis, saya pikir pengamatan berikut dapat dilakukan:

  • Saat menggunakan RDB (pengaturan default), redis akan bercabang setiap kali save operasi dipicu, yang (secara default) disetel ke setiap 15 menit minimal . Ketika lebih banyak penulisan ke Redis dilakukan, maka penulisan RDB sesering sekali setiap 60 detik .
  • Setiap fork akan menggunakan alokasi memori "copy-on-write", yang berarti bahwa sementara memori tidak akan benar-benar berlipat ganda - itu akan muncul pada alat seperti ps , htop dan sejenisnya.
  • Fork itu sendiri bisa menjadi operasi yang cukup membutuhkan CPU, terutama pada host virtual berbasis xen (yang kami gunakan saat ini).
  • Operasi tulis tampaknya ditimpa sepenuhnya file RDB yang ada. Itu tidak hanya menulis perubahan, tetapi membuang seluruh kumpulan data ke disk.

Jadi pada host virtual sederhana dengan RAM 4Gb dan kumpulan data sekitar 750Mb (pada saat saya memposting pertanyaan), ini mulai menjadi agak "mahal". Kami mengamati lonjakan CPU/Memori tersebut, serta peningkatan IO, bahkan dalam penggunaan beban/redis yang cukup moderat.

Jadi untuk menjawab pertanyaan saya sendiri - ini tampaknya merupakan perilaku yang "diharapkan".

Untuk memperbaiki situasi, kami memilih untuk mengubah konfigurasi kami menggunakan kombinasi RDB dan AOF. AOF (Append Only File), tampaknya hanya menulis perubahan ke disk. Anda masih dapat (dan harus) mengonfigurasi file AOF untuk ditulis ulang (menggunakan auto-aof-rewrite-percentage dan auto-aof-rewrite-min-size pengaturan). Juga disarankan untuk tetap menggunakan RDB untuk snapshot. Namun, dalam konfigurasi ini, Anda mungkin dapat melakukan penulisan ulang/snapshot penuh lebih jarang dan tetap mempertahankan kinerja yang cukup baik dan daya tahan yang lebih baik lagi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tidak dapat memulai server Redis karena kesalahan file konfigurasi

  2. Berlangganan ke beberapa saluran dengan utas yang sama Jedis

  3. Koneksi ke kluster Redis gagal

  4. Bagaimana cara men-deploy node.js dengan redis di kubernetes?

  5. Membuat fungsi tampilan tanpa mengembalikan respons di Flask