我在 Debian 服务器 8.5 上运行 Redis 服务器 2.8.17。我将 Redis 用作 Django 1.8.4 应用程序的 session 存储。
我已经几个月没有更改服务器上的软件配置了,一切正常,直到一周前 Django 开始引发以下错误:
MISCONF Redis is configured to save RDB snapshots but is currently not able to persist to disk. Commands that may modify the data set are disabled. Please check Redis logs for details...
我检查了 redis 日志,发现这种情况大约每秒发生一次:
1 changes in 900 seconds. Saving...
Background saving started by pid 22213
Failed opening .rdb for saving: Permission denied
Background saving error
我已经阅读了这两个 SO 问题 1 , 2但他们没有帮助我找到问题。
ps 显示用户“redis”正在运行服务器:
redis 26769 ... /usr/bin/redis-server *.6379
我检查了我的配置文件中的 redis 文件名和路径:
grep ^dir /etc/redis/redis.conf =>
dir /var/lib/redis
grep ^dbfilename /etc =>
dbfilename dump.rdb
/var/lib/redis 的权限为 755,归 redis:redis 所有。 /var/lib/redis/dump.rdb 的权限是 644,它也归 redis:redis 所有。
我还在服务器进程上运行了 strace:
ps -C redis-server # pid = 26769
sudo strace -p 26769 -o /tmp/strace.out
但是当我检查输出时,我没有看到任何错误。特别是我没有看到我预期的“权限被拒绝”错误。
此外,/var/lib/redis 不是 NFS 目录。
有谁知道还有什么可能导致这种情况?我不想不得不停止使用 Redis。我知道我可以运行命令“set stop-writes-on-bgsave-error yes”,但这并不能解决问题。
现在这种情况每天都在发生,我唯一能阻止错误的方法就是重启 Redis 服务器。
谢谢。
最佳答案
我刚刚遇到了类似的问题。尽管我的配置文件是正确的,但当我在 redis-client 中检查实际的 dbfilename 和 dir 时,它们是不正确的。
运行 redis-cli
然后
CONFIG GET dbfilename
应该返回类似的东西
1) "dbfilename"
2) "dump.rdb"
1) 只是键,2) 是值。类似地,然后运行 CONFIG GET dir
应该返回类似的内容
1) "dir"
2) "/var/lib/redis"
确认这些是正确的,如果不正确,用CONFIG SET dir/correct/path
设置它们
希望这对您有所帮助!
关于django - Redis 告诉我 "Failed opening .rdb for saving: Permission denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40095775/