2013-06-23 75 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任务时) –