0

我有一个 NodeJS 工作者,它每小时更新我的​​ Redis 数据库。该工作批量查询远程数据库,从而将请求组串行发送,从而最大限度地提高性能(在远程数据库上)。

当我将响应写回我的 Redis Sorted Set(s) 时,我观察到 -有时- 从 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

看来zenbeni的评论非常准确。如果保留在默认模式下,Redis 将在一定数量的更新后转储到磁盘。但是,在我的用例中,实际上这几乎是随机的,因为对于每个外部查询后生成多少更新并没有真正的系统性。

因此,当 Redis 正在转储到硬盘并且它还在内存中读取和写入数据库时​​,事情会变慢。在这个阶段我不清楚这是否是我必须使用的 Windows 版本的 Redis 的一个特殊问题。我会想象,一旦我进入该产品的更成熟版本,我将能够转移到基于 linux 的操作系统。

于 2013-11-25T11:19:00.223 回答