【发布时间】:2017-10-22 18:44:53
【问题描述】:
背景:
我有一个使用 4 个 Redis 实例的实时 Django 应用程序。
前两个容量很大:备份量分别为 ~2GB 和 ~4.4GB。另外两个很小:~85M 和~15M。
redis-server --version 产生Redis server v=4.0.2 sha=00000000:0 malloc=jemalloc-4.0.3 bits=64 build=401ce53d7b0383ca。
问题:
它也是一个运行 PostgreSQL 9.6.5 的繁忙服务器。 PG数据和Redis备份都保存在二级盘xvdb。
我注意到,每当我的大型 Redis 实例开始备份时,磁盘 I/O 自然会出现峰值,并且 PostgreSQL 提交语句开始在慢速日志中堆积。看:
21:49:26.171 UTC [44861] ubuntu@myapp LOG: duration: 3063.262 ms statement: COMMIT
21:49:26.171 UTC [44890] ubuntu@myapp LOG: duration: 748.307 ms statement: COMMIT
21:49:26.171 UTC [44882] ubuntu@myapp LOG: duration: 1497.461 ms statement: COMMIT
21:49:26.171 UTC [44893] ubuntu@myapp LOG: duration: 655.063 ms statement: COMMIT
21:49:26.171 UTC [44894] ubuntu@myapp LOG: duration: 559.743 ms statement: COMMIT
21:49:26.172 UTC [44883] ubuntu@myapp LOG: duration: 1415.733 ms statement: COMMIT
因此,这就是我的 PostgreSQL 提交每天的样子:
问题:
我可以在 Redis 方面做些什么来帮助解决这种棘手的情况吗?我希望 Redis 和 PostgreSQL 在一台机器上尽可能和谐地生活。
更多信息:
如果需要,请询问更多信息。
机器规格:
AWS EC2 m4.4xlarge (16 cores, 64GB RAM)
Elastic Block Store gp2 volumes (105 IOPS, burst upto 3000 IOPS)
以下配置存在于我的 Redis conf 文件的 Append Only Mode 部分:
appendonly no
appendfilename "appendonly.aof"
# appendfsync always
appendfsync everysec
# appendfsync no
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
典型的iostat -xmt 3 值为:
10/15/2017 08:28:35 PM
avg-cpu: %user %nice %system %iowait %steal %idle
10.44 0.00 0.93 0.15 0.06 88.43
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
xvda 0.00 0.00 0.00 2.00 0.00 0.04 38.67 0.00 0.00 0.00 0.00 0.00 0.00
xvdb 0.00 2.67 0.00 44.67 0.00 0.41 18.99 0.13 2.81 0.00 2.81 1.07 4.80
将其与记录慢速提交的时间进行比较:
10/15/2017 10:18:11 PM
avg-cpu: %user %nice %system %iowait %steal %idle
8.16 0.00 0.65 11.90 0.04 79.24
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
xvda 0.00 4.00 0.00 1.00 0.00 0.02 48.00 0.00 1.33 0.00 1.33 1.33 0.13
xvdb 0.00 0.00 1.67 1312.00 0.01 163.50 254.90 142.56 107.64 25.60 107.75 0.76 100.00
第一个 Redis 实例具有以下快照配置:
save 7200 1
#save 300 10
#save 60 10000
第二个 Redis 实例具有以下快照配置:
save 21600 10
#save 300 10
#save 60 10000
【问题讨论】:
标签: redis