2013-07-09 8 views
8

जारी नहीं करता है ऐसा लगता है कि कार्य समाप्त होने के बाद सेलेरी स्मृति को रिलीज़ नहीं करता है। हर बार एक कार्य खत्म होने पर, 5 एम -10 मीटर मेमोरी रिसाव होगी। तो हजारों कार्यों के साथ, जल्द ही यह सभी स्मृति का उपयोग करेगा।सेलेरी मेमोरी

BROKER_URL = 'amqp://[email protected]:5672/vhost' 
# CELERY_RESULT_BACKEND = 'amqp://[email protected]:5672/vhost' 

CELERY_IMPORTS = (
    'tasks.tasks', 
) 

CELERY_IGNORE_RESULT = True 
CELERY_DISABLE_RATE_LIMITS = True 
# CELERY_ACKS_LATE = True 
CELERY_TASK_RESULT_EXPIRES = 3600 
# maximum time for a task to execute 
CELERYD_TASK_TIME_LIMIT = 600 
CELERY_DEFAULT_ROUTING_KEY = "default" 
CELERY_DEFAULT_QUEUE = 'default' 
CELERY_DEFAULT_EXCHANGE = "default" 
CELERY_DEFAULT_EXCHANGE_TYPE = "direct" 
# CELERYD_MAX_TASKS_PER_CHILD = 50 
CELERY_DISABLE_RATE_LIMITS = True 
CELERYD_CONCURRENCY = 2 

मुद्दे के साथ ही हो सकता है, लेकिन यह एक जवाब है नहीं करता है: RabbitMQ/Celery/Django Memory Leak?

मैं Django का उपयोग नहीं कर रहा हूँ, और मेरे पैकेज हैं:

Chameleon==2.11 
Fabric==1.6.0 
Mako==0.8.0 
MarkupSafe==0.15 
MySQL-python==1.2.4 
Paste==1.7.5.1 
PasteDeploy==1.5.0 
SQLAlchemy==0.8.1 
WebOb==1.2.3 
altgraph==0.10.2 
amqp==1.0.11 
anyjson==0.3.3 
argparse==1.2.1 
billiard==2.7.3.28 
biplist==0.5 
celery==3.0.19 
chaussette==0.9 
distribute==0.6.34 
flower==0.5.1 
gevent==0.13.8 
greenlet==0.4.1 
kombu==2.5.10 
macholib==1.5.1 
objgraph==1.7.2 
paramiko==1.10.1 
pycrypto==2.6 
pyes==0.20.0 
pyramid==1.4.1 
python-dateutil==2.1 
redis==2.7.6 
repoze.lru==0.6 
requests==1.2.3 
six==1.3.0 
tornado==3.1 
translationstring==1.1 
urllib3==1.6 
venusian==1.0a8 
wsgiref==0.1.2 
zope.deprecation==4.0.2 
zope.interface==4.0.5 

मैं सिर्फ एक परीक्षण जोड़ा जैसे कार्य, test_string एक बड़ी स्ट्रिंग है, और इसमें अभी भी मेमोरी लीक है:

@celery.task(ignore_result=True) 
def process_crash_xml(test_string, client_ip, request_timestamp): 
    logger.info("%s %s" % (client_ip, request_timestamp)) 
    test = [test_string] * 5 
+0

में worker_max_tasks_per_child प्रयोग कर रहे हैं 'virtualenv'? क्या आपके पास उपयोग किए जा रहे पैकेज/संस्करणों की सूची है? – dnozay

+0

यदि आप django का उपयोग कर रहे हैं तो सुनिश्चित करें कि DEBUG = False – monkut

उत्तर

4

यह कॉन्फ़िगरेशन विकल्प था जिसने मेरे कार्यकर्ता को स्मृति जारी नहीं किया।

CELERYD_TASK_TIME_LIMIT = 600 

उल्लेख करने के लिए: https://github.com/celery/celery/issues/1427

0

आप librabbitmq में this issue पर मार सकते हैं। कृपया जांचें कि सेलेरी librabbitmq>=1.0.1 का उपयोग कर रही है या नहीं।

कोशिश करने के लिए एक सरल फिक्स है: pip install librabbitmq>=1.0.1

+0

मैं librabbitmq का उपयोग नहीं कर रहा हूं। सेलरी को चलाने के लिए "amqp> = 1.0.11, <1.1.0" की आवश्यकता होती है। –

संबंधित मुद्दे