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

Как Nginx обрабатывает HTTP-запросы?

Я понимаю поток, который использует Apache: каждое соединение открывает поток и когда отправляется ответ, поток закрывается, освобождая ресурсы для других потоков).

Но я не получаю проект, управляемый событиями, который использует Nginx. Я прочитал некоторые основы о дизайне, управляемом событиями, но я не понимаю, как это используется nginx для обработки веб-запросов.

Где я могу читать и понимать, как Nginx обрабатывает соединения в пути, управляемом событиями, поэтому я понимаю, почему это лучше, а не просто принимать дизайн, основанный на событиях, лучше, чем дизайн с поддержкой потоков.

4b9b3361

Ответ 1

Nginx использует шаблон Reactor. В принципе, это однопоточное (но может вызывать несколько процессов для использования нескольких ядер). Основной цикл событий ожидает, что ОС сообщит о событии готовности - например, эти данные доступны для чтения из сокета, после чего он считывается в буфер и обрабатывается. Единственный поток может очень эффективно обслуживать десятки тысяч одновременных подключений (модель нитей за соединение может потерпеть неудачу в связи с огромными расходами на переключение контекста, а также большим объемом памяти, так как каждому потоку нужен собственный стек).