Celery - минимизировать потребление памяти

У нас есть ~ 300 процессов celeryd, работающих под 64-битной Ubuntu 10.4, в режиме ожидания каждый процесс занимает ~ 19 МБ RES, ~ 174 МБ VIRT, таким образом - это около 6 ГБ ОЗУ в режиме ожидания для всех процессов . В активном состоянии - процесс занимает до 100 МБ RES и ~ 300 МБ VIRT

Каждый процесс использует minidom (файлы xml <500kb, простая структура) и urllib.

Вопросы - как уменьшить потребление оперативной памяти - по крайней мере, для простаивающих работников, возможно, могут помочь некоторые параметры сельдерея или питона? Как определить, какая часть занимает больше всего памяти?

UPD: это агенты поиска рейсов, один работник на одно агентство / дату. У нас есть 10 агентств, один поиск пользователя == 9 дат, таким образом, у нас есть 10 * 9 агентов на один поиск пользователя.

Можно ли запускать процессы celeryd по запросу, чтобы избежать простоя рабочих (что-то вроде MaxSpareServers на apache)?

UPD2: Жизненный цикл агента - отправить HTTP-запрос, подождать ответа ~ 10-20 секунд, проанализировать xml (занимает менее 0,02 с), сохранить результат в MySQL

9
задан Andrew 3 December 2010 в 17:08
поделиться