Назад | Перейти на главную страницу

Как apache создает поток?

Когда несколько дней назад я разговаривал со своими коллегами, один из них упомянул, что apache создает поток для каждого соединения.

Что он имеет в виду под конкретным подключением?

Допустим, у меня есть HTML-файл, содержащий три изображения. Когда я обращаюсь к файлу, мои браузеры запрашивают у сервера три изображения. так ... делает ли apache поток для каждого изображения?

«Допустим, у меня есть HTML-файл, содержащий три изображения. Когда я обращаюсь к файлу, мои браузеры запрашивают три изображения на сервере. Итак ... создает ли apache поток для каждого изображения?»

Да, если верны две вещи: во-первых, браузер должен запросить три изображения, используя три отдельных соединения. Во-вторых, обработка трех запросов на стороне сервера должна перекрываться.

Если браузер использует только одно соединение, используя пакеты поддержки активности HTTP / 1.1, то даже если Apache использует поток для каждого соединения, остается только один поток. И даже если браузер действительно использует три соединения, если браузер закрывает каждое соединение перед открытием следующего, тогда Apache может повторно использовать один и тот же поток и не нуждаться в трех разных потоках для обработки трех соединений.

Apache обрабатывает несколько подключений с помощью Модуль мультиобработки (MPM). MPM по умолчанию зависит от среды, в которой установлен ваш сервер.

MPM по умолчанию в двух наиболее распространенных средах следующие:

Unix    prefork
Windows mpm_winnt

В Prefork MPM основан на процессах и не использует потоки. Альтернативой в средах Unix является рабочий MPM, который использует несколько процессов и несколько потоков для каждого процесса.

В mpm_winnt MPM использует 1 серверный процесс, 1 дочерний процесс и несколько потоков внутри дочернего процесса.