Redis pai processo esmagando disco apesar appendfsync = não

1

Estamos vendo cargas de IO do servidor de redis, apesar de nossas operações de salvamento estarem definidas para ocorrer uma vez a cada 15 minutos apenas.

A carga de trabalho é um "cache de página inteira"; nós armazenamos blobs de HTML comprimido. O HTML pode ser recriado em tempo real, se necessário, portanto, não precisamos de backup / persistência atualizados ao minuto.

Especificações do servidor:

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"

De o 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.

Por isso, só esperaria um alto IO do Redis quando o processo filho temporário existir para executar a operação de salvamento em segundo plano.

Do nosso log do Redis, sobre as salvaguardas de fundo:

# 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

Isso ocorre a cada 900 segundos (15 minutos) e leva aproximadamente 1 minuto para ser executado.

Como posso depurar isso mais?

    
por Jon M 27.08.2015 / 18:19

0 respostas