Я пытаюсь понять, что делает Nginx настолько быстрым, и у меня есть несколько вопросов.
Насколько я понимаю, Apache либо порождает новый процесс для обслуживания каждого запроса, либо порождает новый поток для обслуживания.каждый запрос.Поскольку каждый новый поток разделяет виртуальное адресное пространство, использование памяти продолжает расти, если поступает несколько одновременных запросов.
Nginx решает эту проблему, имея только один прослушивающий процесс (Master) с одним потоком выполнения AND 2или 3 (число настраивается) рабочих процессов.Этот главный процесс / поток выполняет цикл обработки событий.Эффективно ждет любого входящего запроса.Когда приходит запрос, он передает этот запрос одному из рабочих процессов.
Пожалуйста, исправьте меня, если мое понимание выше неверно
Если вышеприведенное верно, то у меня есть несколько вопросов:
1.) Разве рабочий процесс не будет порождать несколько потоков и не столкнется с той же проблемой, что и apache?
2.) Или nginx быстр, потому что его архитектура, основанная на событиях, использует неблокирующий ввод-вывод под всем этим.Может быть, рабочий процесс порождает потоки, которые только не блокируют ввод-вывод, так?
3.) Что такое «архитектура, основанная на событиях», может ли кто-то действительно упростить ее для такого человека, как я, чтобы понять.Это относится только к non-blocking-io или к чему-то еще?
Я получил ссылку c10k , я пытаюсь пройти через это, но я не думаю, что это арка, основанная на событиях.кажется больше для неблокирующего IO.