У нас есть ~ 300 процессов celeryd, работающих под 64-битной Ubuntu 10.4, в режиме ожидания каждый процесс занимает ~ 19 МБ RES, ~ 174 МБ VIRT, таким образом - это около 6 ГБ ОЗУ в режиме ожидания для всех процессов.
В активном состоянии - процесс занимает до 100 МБ RES и ~ 300 МБ VIRT
Каждый процесс использует minidom (xml-файлы <500 КБ, простая структура) и urllib. </p>
Вопросы - как мы можем уменьшить потребление ОЗУ - по крайней мере, для незанятых работников, возможно, могут помочь некоторые варианты сельдерея или питона?
Как определить, какая часть занимает большую часть памяти?
UPD: это агенты по поиску рейсов, один сотрудник на одно агентство / дату. У нас 10 агентств, один пользовательский поиск == 9 дат, таким образом, у нас есть 10 * 9 агентов на один пользовательский поиск.
Можно ли запускать процессы celeryd по требованию, чтобы избежать простоя (что-то вроде MaxSpareServers на apache)?
UPD2: Жизненный цикл агента: отправка HTTP-запроса, ожидание ответа ~ 10-20 секунд, анализ xml (занимает менее 0,02 с), сохранение результата в MySQL