降低芹菜任务的内存使用量?

时间:2012-07-23 10:33:36

标签: django celery

我正在使用django,celery和rabbitmq来运行2个周期性任务和6个临时任务。所有任务都位于(app)/tasks.py中。定期和临时任务分为两个单独的队列(high_priority_queue和low_priority_queue)。

我为节拍和两个队列设置了三个管理员命令:

$ ./manage.py celeryd --concurrency=1 --verbosity=3 --loglevel=INFO --beat
$ ./manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue
$ ./manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue

tasks.py文件大约是686行的python,主要是做网络和数据库工作。有15行导入和大约14个Django模型。导入的一个导入行中的模型类。

在我的ubuntu服务器上,我可以看到每个线程在41-48MB的RES内存之间使用。我觉得这很多,我想知道是否有办法将每个线程的RES内存使用率降低。我可以做一个代码组织技巧吗?我应该在它们用于每项任务之前导入模型吗?

以下是摘录:

VIRT  RES  SHR %MEM COMMAND                                                                                                                                                                                                            18701 mark      20   0  253m  61m 1396 S   26  8.3   0:10.90 /home/mark/.virtualenvs/searchrank.is/bin/python /home/mark/searchrank.is/src/manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue                           
320m  59m 1400  8.1 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue                           
317m  59m 1360  8.0 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue                          
303m  45m 1172  6.2 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue                          
300m  43m 1056  5.9 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue                           
300m  43m  348  5.9 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue                          
305m  30m    0  4.1 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue                          
305m  29m    0  4.0 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue                           
306m  27m    8  3.7 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue                          
305m  25m   16  3.5 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue                           
304m  24m    0  3.4 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue                          
304m  24m   12  3.4 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue                           
305m  19m    4  2.7 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue                           
230m  19m  164  2.6 .../manage.py celeryd --concurrency=1 --verbosity=3 --loglevel=INFO --beat                                                                
306m  18m    0  2.5 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=high_priority_queue                          
303m  16m    4  2.3 .../manage.py celeryd --concurrency=1 --autoscale=2,1 --verbosity=3 --loglevel=INFO --queues=low_priority_queue                           
299m  15m 1020  2.2 .../manage.py celeryd --concurrency=1 --verbosity=3 --loglevel=INFO --beat

0 个答案:

没有答案