ERR Can't save in background: fork failed: Background save failed: fork failed
RedisЧто это значит?
Redis не удалось создать дочерний процесс (fork) для фонового снимка RDB или перезаписи AOF. Поскольку персистентность не может работать, данные не могут быть записаны на диск.
Почему возникает?
Операционная система не может выделить достаточно памяти для fork; обычно отключён overcommit_memory, и система отказывает, когда Redis пытается зарезервировать примерно копию используемой им памяти. Причиной также может быть нехватка физической/виртуальной памяти или лимиты числа процессов.
Как исправить
Включите overcommit памяти в Linux: sysctl vm.overcommit_memory=1 (добавьте в /etc/sysctl.conf, чтобы сделать постоянным). Добавьте памяти серверу или снизьте использование памяти Redis (maxmemory). Обеспечьте достаточный объём swap. Проверьте лимиты процессов/дескрипторов файлов (ulimit). Если персистентность критична, не выходите в продуктив без этих настроек.
Ещё по этой СУБД
- ERR unknown subcommandERR: неизвестная подкоманда или неверное число аргументов
- ERR Client sent AUTH, but no password is setERR: AUTH <password> вызван, хотя для пользователя по умолчанию не настроен пароль (Redis 6+) / ERR: клиент отправил AUTH, но пароль не задан (Redis <6)
- ERR DEBUG command not allowedDEBUG command not allowed
- NOPROTO unsupported protocol versionUnsupported RESP protocol version
- ERR Unknown option or number of arguments for CONFIG SETUnknown option or number of arguments for CONFIG SET (older versions: Unsupported CONFIG parameter)
- ERR MULTI calls can not be nestedMULTI calls can not be nested
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable