Мы видим множество операций ввода-вывода с сервера redis, несмотря на то, что наши операции сохранения настроены на выполнение только каждые 15 минут.
Рабочая нагрузка - это «полный кеш страницы»; мы храним капли сжатого HTML. При необходимости HTML может быть воссоздан на лету, поэтому нам не нужны самые свежие резервные копии / постоянство.
Характеристики сервера:
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 сохранить конфигурацию:
redis 127.0.0.1:6379> config get save
1) "save"
2) "900 10000"
Конфигурация redis appendfsync:
redis 127.0.0.1:6379> config get appendfsync
1) "appendfsync"
2) "no"
Из руководство
RDB максимизирует производительность Redis, поскольку единственная работа, которую родительский процесс Redis должен выполнять для сохранения, - это разветвление дочернего процесса, который сделает все остальное. Родительский экземпляр никогда не будет выполнять дисковый ввод-вывод или что-то подобное.
Поэтому я бы ожидал высокого ввода-вывода от Redis только тогда, когда существует временный дочерний процесс для выполнения операции фонового сохранения.
Из нашего журнала Redis относительно фоновых сохранений:
# 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
Это выполняется каждые 900 секунд (15 минут) и занимает около 1 минуты.
Как я могу отладить это дальше?