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.