2017-08-21 70 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