10

次の状況で「maxmemory」の安全な設定を見つけようとしています。

  • 書き込みの多いアプリケーション
  • 8GBのRAM
  • 他のプロセスが約1GBを占めると仮定しましょう
  • これは、redis プロセスのメモリ使用量が 7GB を超えないことを意味します
  • 次の理由により、BGSAVE イベントごとにメモリ使用量が 2 倍になります。

redisドキュメントでは、BGSAVE イベントで増加するメモリ使用量について次のように述べられています。

非常に書き込みの多いアプリケーションで Redis を使用している場合、RDB ファイルをディスクに保存したり、AOF ログを書き換えたりしている間、Re​​dis は通常使用されるメモリの最大 2 倍を使用する可能性があります。

  • maxmemory 制限は、redis-cli INFO の「used_memory」と大まかに比較され (ここで説明されているように)、redis によって使用される他のメモリは考慮されません。

この状況では、maxmemory 設定を (8GB - 1GB) / 2 = 3.5GB 以下に設定する必要があるということでよろしいですか?

もしそうなら、これをより明確に反映するために、redis ドキュメントのプル リクエストを作成します。

4

1 に答える 1

4

この場合、3GB の制限をお勧めします。はい、ドキュメントはほぼ正確であり、bgsave を実行すると、メモリ要件が短期間で 2 倍になります。ただし、私はシステム用に 2GB のメモリを予約するか、最大メモリの 40% の永続的なマスター用に最大で予約することを好みます。

非常に書き込みの多いアプリケーションがあることを示しています。この場合、2 台目のサーバーで保存操作を行うことを強くお勧めします。大量の書き込みと bgsave 中に、クライアントへの応答時間が長くなる可能性があることがわかりました。Redis 自体が原因ではなく、サーバー自体の応答です。これは特に仮想マシンに当てはまります。このセットアップでは、2 番目のサーバーを使用してプライマリからスレーブにし、最初のサーバーが応答している間にディスクに保存します。

于 2013-03-02T19:15:28.697 に答える