Что предпочтительней в конфигурации uWSGI Python: workers или threads?

Что предпочтительный несколько независых процессов:
<workers>4</workers>

или один процесс и несколько потоков:
<workers>1</workers>
<enable-threads />
<threads>4</threads>


или гибрид (потоки и процессы):
<workers>4</workers>
<enable-threads />
<threads>2</threads>


Кто как свой uWSGI настраивает, какие тут могут быть подвохи и подводжные камни. Какие преимущества?
  • Вопрос задан
  • 6849 просмотров
Пригласить эксперта
Ответы на вопрос 1
Yngvie
@Yngvie
В свое время использовали Siege-тест чтобы проверить разные возможные конфигурации

Тут надо учитывать особенность питона и в частности GIL, так что задачи требующии процессорного времени не паралеляться с помощью потоков, даже при наличии нескольких ЦП. С другой стороны для задач требующих ввода/вывода потоки дают свой прирост, к тому же поток потребляет меньше памяти, чем целиком процесс.

Если ваша программа не полагается на однопоточность, то нет смысла иметь количество процессов значительно превышающих количество ЦП/ядер. Идеальней будет использовать гибрид, количество процессов под количество ЦП, количество потоков… ну тут зависит больше от того, сколько памяти. У нас на разных проектах это обычно 5-25 потоков.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы