2017-08-21 71 views
0

我使用带redis的celery工作服务器作为代理url(用于接收任务)以及结果后端。在启动芹菜工作服务器时无法诊断MISCONF redis问题

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

工作进程开始处理来自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.',)

我检查Redis的日志文件中/var/log/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 

的dump.rdb文件被写入/var/lib/redis/dump.rdb。 由于日志报告了No space left on device,我检查了安装了/var的磁盘空间,似乎还有足够的空间(1.2GB)。

如果有足够的磁盘空间,我该如何解决此错误的根本原因?当然,为了防止这种错误发生,我可以在redis-cli中设置config set stop-writes-on-bgsave-error no。但我想找到这个错误的根本原因。任何帮助或指针?

回答

0

也许这是由交换文件引起的。因为交换文件占用了磁盘的1.2Gb空间。所以redis抱怨没有空间来写。

试试这个“swapon -s”命令来检查它。

我认为1.2Gb是不够的,如果这个磁盘接受RAM页面交换。你应该在更大的目录中改变RDB的目录。

+0

看起来似乎合理但没有。 swapon -s给我'/ dev/sdb1分区7811068 1966056 -1'和'/ buf/swap1文件25165820 204128 -2' 我的'/ var'被映射到'/ dev/sdb6',它有rdb和空闲磁盘空间。 – hAcKnRoCk