Задать вопрос

Nginx. Почему процессы, а не потоки?

Когда делал веб-сервер (win api), я использовал потоки, чтобы обеспечить скорость работы на многоядерных системах.

Nginx использует процессы, а не потоки. А почему?


Собственно, есть несколько предположений, но понять какое из них верное, гугл не помог:

1. Обойти лимит файловых дескрипторов на процесс.

2. Отказоустойчивость (упал 1 процесс — другие живи).

3. Безопасность (не уверен, что понимаю каким образом).


Приму другие догадки, но лучше реальные причины такого решения, спасибо.

Уточнение

Потоки вместо процессов != один поток на одно соединение.

Можно делать воркеры-процессы(nginx), можно воркеры-потоки(mywebserver), можно для каждого соединения создавать поток/процесс(apache).


Интересует, конкретно, почему nginx напилил воркеры-процессы, а не воркеры-потоки.

Ответ

Игорь Сысоев:


Изначально потоки планировались, но не были использованы по ряду причин:


1) более трудоёмкое программирование,

2) плохая поддержка потоков во FreeBSD и Linux на 2002-2004 год,

3) процессы обеспечивают естественную изоляцию ресурсов, уменьшая

конкуренцию за них.
  • Вопрос задан
  • 4778 просмотров
Подписаться 5 Комментировать
Подписчики вопроса 5 К ответам на вопрос (12)