2013-06-23 125 views
1

我使用django + celery和redis作爲代理,我的任務之一是讀取大小約25MB的大文件並返回結果,並將結果鏈接到另一個任務以處理結果。django-celery redis memoryerror

我在這裏遇到這個錯誤,由於我對redis不熟悉,所以我正在尋求幫助。可能是什麼問題?

[2013-06-23 22:45:41,241: ERROR/MainProcess] Unrecoverable error: MemoryError() 
Traceback (most recent call last): 
    File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/celery/worker/__init__.py", line 363, in start 
    component.start() 
    File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/celery/worker/consumer.py", line 395, in start 
    self.consume_messages() 
    File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/celery/worker/consumer.py", line 480, in consume_messages 
    readers[fileno](fileno, event) 
    File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/kombu/transport/redis.py", line 770, in handle_event 
    self._callbacks[queue](message) 
    File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/kombu/transport/virtual/__init__.py", line 479, in _callback 
    self.qos.append(message, message.delivery_tag) 
    File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/kombu/transport/redis.py", line 117, in append 
    dumps([message._raw, EX, RK])) \ 
    File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/redis/client.py", line 1808, in execute 
    return execute(conn, stack, raise_on_error) 
    File "/home/property/virtualenv/property_env/lib/python2.6/site-packages/redis/client.py", line 1705, in _execute_transaction 
    [args for args, options in cmds])) 
MemoryError 

不確定它是否提供任何提示,但檢查redis服務器上的maxmemory設置似乎不成問題。

redis 127.0.0.1:6379> config get maxmemory 
1) "maxmemory" 
2) "3758096384" 
+0

做它發生的每一次併發/隨機或在工人運行一段時間後? –

回答

1

它看起來是內存錯誤是不是在Redis的一面,但在客戶端(芹菜工人)

我的猜測是,工人正在運行的內存

你應該確保芹菜進程實際上可以將來自redis的結果分配到內存中。

如果發生這種情況很少任務執行後,意味着你沒有足夠的內存來處理你設置,或者您正在泄漏內存(離開從Redis的對象的引用)的地方

+0

好的建議。是否存在一個內存限制的清除過程下運行?調查此內存問題的最佳方法是什麼? – goh

+0

@goh取決於你的設置,但通常你沒有內存限制;建議您在運行芹菜時檢查工作計算機上的內存使用情況(以及處理25MB任務時) –