Когда несколько дней назад я разговаривал со своими коллегами, один из них упомянул, что 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 дочерний процесс и несколько потоков внутри дочернего процесса.