0

Redis データベースを 1 時間ごとに更新する NodeJS ワーカーがあります。この作業では、(リモート データベースでの) パフォーマンスを最大化するために、要求のグループが連続して送信されるように、バッチでリモート データベースにクエリを実行します。

応答を Redis ソート セットに書き戻すと、ときどき、Redis データベースからの読み取りが非常に遅くなり、ブロッキングが発生しているかのように動作することがわかります。

なぜこれが時々しか起こらないのかを確認するために最善を尽くしましたが、パフォーマンスを確実に再現することも、体系的な方法で再現することもできません.

パフォーマンスが大幅に低下する正当な理由はありますか? 何か不足していますか?

ウィンドウ上の Redis:

redis_version:2.4.6
redis_git_sha1:26cdd13a
redis_git_dirty:0
arch_bits:64
multiplexing_api:winsock2
gcc_version:4.6.1
process_id:7512
uptime_in_seconds:202034
uptime_in_days:2
lru_clock:23886
used_cpu_sys:290.65
used_cpu_user:2261.94
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:3
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:780833728
used_memory_human:744.66M
used_memory_rss:780833728
used_memory_peak:780849896
used_memory_peak_human:744.68M
mem_fragmentation_ratio:1.00
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:-26
bgsave_in_progress:0
last_save_time:1384359002
bgrewriteaof_in_progress:0
total_connections_received:6
total_commands_processed:12908729
expired_keys:0
evicted_keys:0
keyspace_hits:12907834
keyspace_misses:888
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:master
db0:keys=698,expires=0
4

1 に答える 1

0

ぜんべにさんのコメントはかなり正確だったようです。Redis は、デフォルト モードのままにしておくと、一定数の更新時にディスクにダンプします。ただし、私の使用例では、実際には、各外部クエリの後に生成される更新の数に関して体系的なものは何もないため、これはかなりランダムです。

したがって、Redis がハードディスクにダンプし、メモリ内のデータベースに対して読み取りと書き込みを行うと、速度が低下します。この段階では、これが私が使用しなければならなかった Windows バージョンの Redis に固有の問題であるかどうかは明確ではありません。製品のより成熟したバージョンに移行したら、Linux ベースの OS に移行できると思います。

于 2013-11-25T11:19:00.223 に答える