Redis rdb 持久化速度很慢

Redis rdb 持久化速度很慢

我的 Redis 集群中的两个节点的持久化性能差别很大。在将数据保存到磁盘时,主节点总是比从节点快得多。以下是主节点的持久化信息:

[fred@redis_master temp]$ redis-cli -h 192.168.1.151 -p 8382
192.168.1.151:8382> info persistence
# Persistence
loading:0
rdb_changes_since_last_save:1206
rdb_bgsave_in_progress:0
rdb_last_save_time:1529636130
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:28
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
192.168.1.151:8382>

以下是从站的信息:

[fred@redis_slave temp]$ redis-cli -h 192.168.2.151 -p 8381
192.168.2.151:8381> info persistence
# Persistence
loading:0
rdb_changes_since_last_save:4850
rdb_bgsave_in_progress:0
rdb_last_save_time:1529635749
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:50
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
192.168.2.151:8381>

可以看出,主节点在“rdb_last_bgsave_time_sec”上花费了 28s,而从节点花费了 50s,这确实拖慢了从节点的速度。我怀疑这很可能与硬盘性能有关,因此我做了以下测试:

[fred@redis_master temp]$ time dd if=/dev/zero of=test.dbf bs=8k count=5000 oflag=direct
5000+0 records in
5000+0 records out
40960000 bytes (41 MB) copied, 0.329285 s, 124 MB/s

real    0m0.331s
user    0m0.006s
sys 0m0.119s

[fred@redis_slave temp]$ time dd if=/dev/zero of=test.dbf bs=8k count=5000 oflag=direct
5000+0 records in
5000+0 records out
40960000 bytes (41 MB) copied, 88.126 s, 465 kB/s

real    1m28.127s
user    0m0.008s
sys 0m0.210s

显然,从节点比主节点花费了更多时间才生成一个 41MB 的文件。我是否可以简单地得出结论,从节点上的持久性缓慢完全是由于硬盘驱动器损坏造成的?还有其他更有效的方法来调试此持久性问题吗?

如果有人能帮忙我将非常感激。

相关内容