我使用具有redis的celery worker服务器作为代理url (用于接收任务)以及结果后端。
BROKER_URL = 'redis://localhost:6379/2' CELERY_RESULT_BACKEND = 'redis://localhost:6379/2' app = Celery('myceleryapp', broker=BROKER_URL,backend=CELERY_RESULT_BACKEND)
我使用celery -A myceleryapp worker -l info -c 8启动celery worker服务器
工作进程开始处理来自redis队列的任务,直到某个时候,我收到了臭名昭著的MISCONF redis错误,芹菜工作进程终止。
Unrecoverable error: ResponseError('MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.',)
我检查了/var/log/redis中的redis日志文件,该文件的尾部包含以下内容
24745:C 19 Aug 09:20:26.169 * RDB: 0 MB of memory used by copy-on-write
1590:M 19 Aug 09:20:26.247 * Background saving terminated with success
1590:M 19 Aug 09:25:27.080 * 10 changes in 300 seconds. Saving...
1590:M 19 Aug 09:25:27.081 * Background saving started by pid 25397
25397:C 19 Aug 09:25:27.082 # Write error saving DB on disk: No space left on device
1590:M 19 Aug 09:25:27.181 # Backgroun1590:M 19 Aug 09:51:03.042 * 1 changes in 900 seconds. Saving...
1590:M 19 Aug 09:51:03.042 * Background saving started by pid 26341
26341:C 19 Aug 09:51:03.405 * DB saved on disk
26341:C 19 Aug 09:51:03.405 * RDB: 22 MB of memory used by copy-on-write
1590:M 19 Aug 09:51:03.487 * Background saving terminated with success 正在向/var/lib/redis/dump.rdb写入dump.rdb文件。由于日志报告了一个No space left on device,所以我检查了挂载/var的磁盘空间,似乎还有足够的空间(1.2GB)。
如果有足够的磁盘空间,如何找到此错误的根本原因?当然,为了防止这种错误的发生,我可以在redis-cli中设置config set stop-writes-on-bgsave-error no。但我想要找出这个错误的根本原因。有什么帮助或建议吗?
发布于 2017-08-21 22:57:29
也许这是由交换文件引起的。因为交换文件占用了1.2 of的磁盘空间。所以redis抱怨没有可写的空间。
尝试这个"swapon -s“命令来检查这一点。
我认为如果这个磁盘接受RAM页面交换,1.2 is是不够的。您应该在更大的目录中更改RDB的目录。
https://stackoverflow.com/questions/45799074
复制相似问题