redis-serverが起動時にデータベースをメモリにロードするのに時間がかかるのはなぜですか?

redis-serverが起動時にデータベースをメモリにロードするのに時間がかかるのはなぜですか?

私のLinuxディストリビューションはこのredisデータベースを使用しています。起動時にredis-serverデータセットをロードするのに約80秒かかります。私が書いた内容を示すログは次のとおりです。

redis-server[249]: 249:M 17 Oct 2022 16:29:55.173 * DB loaded from append only file: 79.442 seconds

Pythonプログラムがメモリのロード操作を完了する前にデータベースを照会しようとすると、例外redis-serverが発生しますredis.exceptions.BusyLoadingError
例外の説明は次のとおりです。Redis is loading the dataset in memory私が説明するコンテキストに適しています(つまり、データベースがメモリにデータをロードしています)。

redis-server現在、デフォルト設定を使用しているため、どの永続性タイプが使用されているのか正確にはわかりませんredis-server
ドキュメントがredis.confかなり長いので、ここでは最も重要だと思う設定を報告します。

...
########################### SNAPSHOTTING  ###########################
#
# Save the DB on disk:
#
#   save <seconds> <changes>
#
#   Will save the DB if both the given number of seconds and the given
#   number of write operations against the DB occurred.

# OE: tune for a small embedded system with a limited # of keys.
save 120 1
save 60 100
save 30 1000

######################### APPEND ONLY MODE #########################
# OE: changed default to enable this
appendonly yes

# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
...

これらの設定(特にappendonly yes)は、データベースで使用される永続性タイプが(Append Only File)であることを示すようですAOF。これらの設定によりロード時間が長くなるようです。

起動時にロード時間が長くなるのを防ぐために使用できる設定はありますか?

ベストアンサー1

これは、redis-server プロセスが追加の専用ファイルを使用するように構成されており、BGREWRITEAOFコマンドを送信しなかったためである可能性が高くなります。

redis.io WebサイトのRedisマニュアルには、4つの永続性(データ復旧)設定の良い説明があります。 https://redis.io/docs/manual/persistence/。ファイルのみを添付するのもオプションの1つです。

これはない悪いオプションを選択すると、少しのメンテナンスが必要です。それ以外の場合は、ご存知のようにプロセスが遅く開始されます。オプションと長所と短所を調べて、使用パターンに最適なオプションを選択してください。

おすすめ記事