SystemdDoctor
служба не работает redis диск данные

Redis: MISCONF Errors writing to the RDB snapshot

Сообщение MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk означает, что сохранение снимка не удалось. Redis при этом продолжает отвечать на чтение, но отклоняет запись — защищая вас от потери данных.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Нет места на диске

    Снимок пишется во временный файл рядом с прежним, поэтому нужно место под две копии данных.

  2. Нет прав на каталог данных

    После ручного создания каталога или смены пользователя службы Redis не может писать в него.

  3. Ядро отказало в выделении памяти для копии процесса

    Для сохранения Redis создаёт копию процесса. При настройке vm.overcommit_memory=0 и большом наборе данных ядро может отказать.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Состояние сохранения: когда была последняя удачная запись и что не так.

redis-cli info persistence | head -20

Место и права на каталог данных.

df -h /var/lib/redis && sudo ls -ld /var/lib/redis

Сообщения Redis о неудачном сохранении.

journalctl -u redis-server -n 40 --no-pager | grep -iE "error|misconf|fork"

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Нет места на диске
Почему происходит
Снимок пишется во временный файл рядом с прежним, поэтому нужно место под две копии данных.
Как проверить
Посмотрите место и каталог данных.
df -h /var/lib/redis
sudo ls -lh /var/lib/redis/
Как исправить
Освободите место. Место нужно с запасом: при сохранении на диске временно лежат две копии набора данных.
2. Нет прав на каталог данных
Почему происходит
После ручного создания каталога или смены пользователя службы Redis не может писать в него.
Как проверить
Посмотрите владельца каталога.
sudo ls -ld /var/lib/redis
systemctl show redis-server -p User
Как исправить
Передайте каталог пользователю службы.
sudo chown -R redis:redis /var/lib/redis
3. Ядро отказало в выделении памяти для копии процесса
Почему происходит
Для сохранения Redis создаёт копию процесса. При настройке vm.overcommit_memory=0 и большом наборе данных ядро может отказать.
Как проверить
Посмотрите настройку и предупреждения Redis.
sysctl vm.overcommit_memory
journalctl -u redis-server -n 30 --no-pager | grep -i overcommit
Как исправить
Установите vm.overcommit_memory=1 — это рекомендация самой документации Redis.
echo "vm.overcommit_memory = 1" | sudo tee /etc/sysctl.d/99-redis.conf && sudo sysctl --system

Пример вывода

Redis отклоняет запись из-за неудачного сохранения. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

redis-server[1200]: # Write error saving DB on disk: No space left on device
redis-server[1200]: # Background saving error
# со стороны клиента:
(error) MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk.

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация Redis: сохранение данных документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено заполнением раздела с каталогом данных Redis.
    собственная проверка, systemd 255
    сверено 15 сентября 2026