1

We are seeing loads of IO from redis-server despite our save operations being set to occur once every 15 minutes only.

The workload is a "full page cache"; we store blobs of compressed HTML. The HTML can be re-created on the fly if necessary, we don't therefore need up-to-the-minute backups / persistence.

Server specs:

2x Hex Core Intel Xeon E5-2640 2.5GHz
128GB RAM
2x 400GB Intel SSDs in RAID 1

IO:

# pidstat -d | grep redis
05:01:35 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
05:01:35 PM     23450      0.01   3981.60      0.00  redis-server

redis save config:

redis 127.0.0.1:6379> config get save
1) "save"
2) "900 10000"

redis appendfsync config:

redis 127.0.0.1:6379> config get appendfsync
1) "appendfsync"
2) "no"

From the manual

RDB maximizes Redis performances since the only work the Redis parent process needs to do in order to persist is forking a child that will do all the rest. The parent instance will never perform disk I/O or alike.

I would therefore only expect high IO from Redis when the temporary child process exists to execute the background save operation.

From our Redis log, regarding background saves:

# tail /var/log/redis/redis.log
[23450] 27 Aug 16:43:20 * 10000 changes in 900 seconds. Saving...
[23450] 27 Aug 16:43:20 * Background saving started by pid 47396
[47396] 27 Aug 16:44:28 * DB saved on disk
[23450] 27 Aug 16:44:29 * Background saving terminated with success
[23450] 27 Aug 16:59:30 * 10000 changes in 900 seconds. Saving...
[23450] 27 Aug 16:59:30 * Background saving started by pid 4722
[4722] 27 Aug 17:00:40 * DB saved on disk
[23450] 27 Aug 17:00:40 * Background saving terminated with success

This runs every 900 seconds (15 mins) and takes approximately 1 minute to execute.

How can I debug this further?

Jon M
  • 457
  • 1
  • 6
  • 11
  • Are you swapping? Is your maxmemory set? Maybe someone is running `BGSAVE` manually (`MONITOR` to see if that is the case) – Itamar Haber Aug 30 '15 at 14:08
  • Hi @ItamarHaber, the server is not swapping, the max memory is set to 9GB. We saw the same behaviour before and after reaching the maxmemory limit. We control the instance and BGSAVE is not being run manually. For now we have moved to a "Redis as a service" provider. – Jon M Sep 01 '15 at 08:00
  • Oh - reading this again I see there no problem with BGSAVEs. Interesting... Good luck with the provider - smart move IMO, – Itamar Haber Sep 01 '15 at 09:48

0 Answers0