- У нас есть установка с большим количеством отдельных установок django на одной коробке. каждая из них имеет свою собственную базу кода & пользователя linux.
- Мы используем сельдерей для некоторых асинхронных задач.
- Каждая установка имеет свою собственную установку для сельдерея, то есть собственный сельдерей & рабочий.
- Количество асинхронных задач на установку ограничено, а не критическое время.
- Когда работник начинает работу, он занимает около 30 мб памяти. когда он продлится некоторое время, эта сумма может расти (предположительно из-за фрагментации).
Последняя точка пули уже была (несколько) решена настройками --maxtasksperchild до низкого числа (скажем, 10). Это обеспечивает перезапуск после 10 задач, после чего память по крайней мере возвращается к 30 МБ.Сельдерей: ограничение использования памяти (большое количество установок джанго)
Однако каждый сельдерей все еще занимает много памяти, так как минимальное количество рабочих кажется равным 1, а не 0. Я также думаю, что работа python manage.py celery worker
не приводит к минимально возможной площади для сельдерея, поскольку полный стек загружается, даже если происходит только проверка задач.
В идеальной конфигурации я хотел бы видеть следующее: процесс с очень небольшим объемом памяти (100 тыс. Или около того) рассматривает очередь для новых задач. когда возникает такая задача, она запускает (тяжелый) полный стек django в отдельном процессе. и когда работник завершен, тяжелый процесс развернут.
Возможно ли такое конфигурирование, используя (несколько) стандартный сельдерей? Если нет, то какие точки расширения существуют?
Мы (в настоящее время) используем сельдерей 3.0.17 и связанный с ним джанго-сельдерей.
Ca. 50 установок в коробке. Различные установки Django Celery соответствуют различным установкам django. Мой сценарий не слишком отличается от «общего хостинга» (хотя я разделяю с собой). То есть различные проекты Django соответствуют различным сайтам (приложениям), которые различны. –
, тогда я думаю, что вам нужно перестроить так, чтобы задания на сельдерей были отделены от установок django - возможно, у вас есть один проект «admin» django, который управляет работой сельдерея, так что вам нужно всего лишь несколько рабочих одновременно. –