Подтвердить что ты не робот

Uwsgi: Определяет количество рабочих/процессов, которые требуется для приложения django?

У меня вопрос для системных администраторов и разработчиков. Я вижу, что uWSGI позволяет мне устанавливать число или рабочих или процессов при запуске uWSGI, и я прочитал, что это зависит от установленной машины, поэтому у меня есть следующие вопросы:

  • Каковы правила, определяющие количество рабочих для машины?
  • При использовании с nginx, имеет ли config worker_processes в nginx.conf это?
  • При использовании с Celery и Redis связан ли этот concurrency с этим?
  • Как насчет безопасности потока в этой настройке? (Я видел случаи в моем приложении, где 1 запрос выполняет 1 задачу, а результат - 2 вызова сельдерея с этой задачей.)
4b9b3361

Ответ 1

  • Каковы правила, определяющие количество рабочих для машины?

    Из uWsgi docs:

    Не существует волшебного правила для установки количества процессов или потоков. Он зависит от приложения и системы. Не думайте, что использование простой математики, такой как 2 * cpucores, будет достаточно. Вам нужно поэкспериментировать с различными настройками, постоянно контролируя ваше приложение. uwsgitop может стать отличным инструментом для поиска наилучшего значения.

  • При использовании с nginx config "worker_processes" в nginx.conf делает это?

    Этот параметр связан только с nginx и не влияет непосредственно на uwsgi. Однако вам, вероятно, придется переделывать этот параметр, потому что вы не хотите иметь двадцать nginx worker_processes и только один рабочий uwsgi.

  • При использовании с сельдереем + redis "concurrency" связан с этим?

    Я обычно разворачиваю демона Celery с помощью django manage.py, поэтому он будет работать вне uwsgi.

  • Как насчет безопасности потока в этой настройке?

    Мне нужно будет узнать больше деталей/особенностей для комментариев.