これをさらに実験し、redisの永続性について読むことで、次のことが観察できると思います。
- RDB(デフォルト設定)を使用する場合、redisは
save
するたびにフォークします 操作がトリガーされます。これは(デフォルトでは)15分ごとに1回に設定されています 。 Redisへの書き込みがさらに実行されると、RDBの書き込みは60秒に1回の頻度で行われます。 。 - 各フォークは「コピーオンライト」メモリ割り当てを使用します。つまり、メモリは実際には2倍になりませんが、
ps
などのツールに表示されます。 、htop
など。 - フォーク自体は、特にxenベースの仮想ホスト(現在使用しているもの)では、CPUを集中的に使用する操作になる可能性があります。
- 書き込み操作は完全に上書きされているようです 既存のRDBファイル。変更を書き込むだけでなく、全体をダンプします。 データセットをディスクに。
したがって、4Gb RAMと約750Mbのデータセット(質問を投稿した時点)を備えた控えめな仮想ホストでは、これはかなり「高価」になり始めます。かなり中程度の負荷/Redis使用量でも、CPU/メモリの急増とIOの増加が観察されました。
ですから、私自身の質問に答えるには、これは「予想される」動作のようです。
状況を改善するために、RDBとAOFの組み合わせを使用するように構成を切り替えることを選択しました。 AOF(Append Only File)は、変更のみを書き込むように見えます ディスクに。 (auto-aof-rewrite-percentage
を使用して)AOFファイルを書き換えるように構成することはできます(そしてそうすべきです)。 およびauto-aof-rewrite-min-size
設定)。スナップショットには引き続きRDBを使用することもお勧めします。ただし、この構成では、完全な書き換え/スナップショットを実行する頻度を減らしても、かなり良好なパフォーマンスとさらに優れた耐久性を維持できます。