3

我正在使用 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
4

0 回答 0