Раздел 10. Модули Апача Пункты: 85 86 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 163 164 165 166 167 168 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 203 204 205 206 207 208 209 210 211 212 213 RU EN Пункт 88. Общие директивы Apache MPM Это управляет каталогом, в который Apache httpd пытается переключиться перед сбросом ядра. Если ваша операционная система настроена на создание файлов ядра в рабочем каталоге аварийного процесса,
Если вам нужен дамп ядра для отладки, вы можете использовать эту директиву, чтобы поместить его в другое место. Эта директива не действует, если ваша операционная система не настроена на запись файлов ядра в рабочий каталог аварийных процессов. Дампы ядра в LinuxЕсли Apache httpd запускается от имени пользователя root и переключается на другого пользователя, ядро Linux отключает дампы ядра, даже если каталог доступен для записи для процесса. Apache httpd (2.0.46 и более поздние версии) повторно включает дампы ядра в Linux 2.4 и более поздних версиях, но только если вы явно настроили файл Дампы ядра в BSDЧтобы разрешить создание дампа исполняемых файлов suid в BSD-системах (таких как FreeBSD), установите Специальные сигналы В некоторых операционных системах SIGQUIT также приводит к созданию дампа ядра, но не обрабатывается Директива EnableExceptionHook
Из соображений безопасности эта директива доступна только в том случае, если сервер был настроен с этой Уже есть два модуля, Директива GracefulShutdownTimeout
Указывает Установка этого значения на ноль означает, что сервер будет бесконечно ждать, пока все оставшиеся запросы не будут полностью обслужены. Директива о прослушивании
Директива Директива Можно использовать несколько Например, чтобы сервер принимал соединения как через порт 80, так и через порт 8000, используйте: Слушай 80 Слушай 8000 Чтобы сервер принимал соединения на двух указанных интерфейсах и номерах портов, используйте Прослушать 192.170.2.1:80 Прослушать 192.170.2.5:8000 Адреса IPv6 должны быть заключены в квадратные скобки, как в следующем примере: Слушайте [2001:db8::a00:20ff:fea7:ccea]:80 Необязательный аргумент протокола не требуется для большинства конфигураций. Если не указано, Вам нужно только установить протокол, если вы работаете на нестандартных портах. Например, запуск Слушай 192.170.2.1:8443 https Состояние ошибкиНесколько Listen директив для одного и того же IP-адреса и порта приведут к Address already in use
сообщению об ошибке.
Смотрите также
Директива ListenBackLog
Максимальная длина очереди ожидающих соединений. Как правило, никакая настройка не требуется или нежелательна, однако в некоторых системах желательно увеличить ее при атаке с переполнением TCP SYN. См. параметр отставания в
Операционная система часто ограничивает это число меньшим числом. Это зависит от ОС. Также обратите внимание, что многие операционные системы не используют именно то, что указано в качестве отставания, а используют число, основанное на (но обычно превышающем) то, что установлено. Директива ListenCoresBucketsRatio
Соотношение между количеством (онлайн) ядер ЦП и количеством сегментов слушателей может быть использовано для того, чтобы заставить Apache HTTP Server создавать
сегменты Значение «онлайн» ядра процессораВ Linux (а также в BSD) ядро ЦП можно включать / выключать, если настроено Hotplug, поэтому Чтобы это было активным, должно быть как минимум вдвое больше ядер ЦП, чем настроенное соотношение . Рекомендуемое
соотношение равно , поэтому
при использовании этого значения во время выполнения должно быть доступно Эта директива влияет на расчет значений
нижней границы Несколько
|
Описание: | Ограничение на количество подключений, которые отдельный дочерний сервер будет обрабатывать в течение своей жизни. |
---|---|
Синтаксис: | MaxConnectionsPerChild number |
По умолчанию: | MaxConnectionsPerChild 0 |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork , mpm_winnt , mpm_netware , mpmt_os2 |
Совместимость: | Доступен Apache HTTP Server 2.3.9 и выше. Старое имя
MaxRequestsPerChild по-прежнему поддерживается. |
Директива MaxConnectionsPerChild
устанавливает ограничение на количество подключений, которые будет обрабатывать отдельный дочерний серверный процесс. После
MaxConnectionsPerChild
соединения дочерний процесс умрет. Если MaxConnectionsPerChild
есть
0
, то процесс никогда не истечет.
Установка MaxConnectionsPerChild
ненулевого значения ограничивает объем памяти, который процесс может потреблять из-за (случайной) утечки памяти.
Описание: | Максимальный объем памяти, который может удерживать основной распределитель без вызова free() |
---|---|
Синтаксис: | MaxMemFree KBytes |
По умолчанию: | MaxMemFree 2048 |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork , mpm_winnt , mpm_netware |
Директива MaxMemFree
устанавливает максимальное количество свободных Кбайт, которое может удерживать каждый распределитель без вызова free()
. В многопоточных MPM каждый поток имеет свой собственный распределитель. При нулевом значении порог будет установлен на неограниченный.
Описание: | Максимальное количество подключений, которые будут обрабатываться одновременно |
---|---|
Синтаксис: | MaxRequestWorkers number |
По умолчанию: | See usage for details |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork |
Директива MaxRequestWorkers
устанавливает ограничение на количество одновременных запросов, которые будут обслуживаться. Любые попытки подключения сверх MaxRequestWorkers
установленного лимита обычно ставятся в очередь, вплоть до числа, определяемого директивой
ListenBacklog
. Как только дочерний процесс освобождается в конце другого запроса, соединение будет обслуживаться.
Для непоточных серверов ( т. е ., prefork
)
MaxRequestWorkers
означает максимальное количество дочерних процессов, которые будут запускаться для обслуживания запросов. Значение по умолчанию 256
: ; чтобы увеличить его, вы должны также поднять
ServerLimit
.
Для многопоточных и гибридных серверов ( например event
,
или worker
) MaxRequestWorkers
ограничивает общее количество потоков, которые будут доступны для обслуживания клиентов. Для гибридных MPM значение по умолчанию равно 16
( ServerLimit
), умноженному на значение
25
( ThreadsPerChild
). Поэтому для увеличения MaxRequestWorkers
до значения, требующего более 16 процессов, необходимо также поднять ServerLimit
.
MaxRequestWorkers
вызывался
MaxClients
до версии 2.3.13. Старое имя по-прежнему поддерживается.
Описание: | Максимальное количество простаивающих потоков |
---|---|
Синтаксис: | MaxSpareThreads number |
По умолчанию: | See usage for details |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , mpm_netware , mpmt_os2 |
Максимальное количество простаивающих потоков. Различные MPM по-разному относятся к этой директиве.
Для worker
и event
значение по умолчанию равно
MaxSpareThreads 250
. Эти MPM имеют дело с бездействующими потоками на уровне сервера. Если на сервере слишком много бездействующих потоков, то дочерние процессы уничтожаются до тех пор, пока количество бездействующих потоков не станет меньше этого числа. Дополнительные процессы/потоки могут быть созданы, если ListenCoresBucketsRatio
включено.
По mpm_netware
умолчанию это
MaxSpareThreads 100
. Поскольку этот MPM запускает один процесс, количество резервных потоков также распространяется на весь сервер.
mpmt_os2
работает аналогично mpm_netware
. Поскольку
mpmt_os2
значение по умолчанию равно 10
.
Диапазон значений MaxSpareThreads
ограничен. Apache httpd автоматически исправит данное значение в соответствии со следующими правилами:
mpm_netware
хочет, чтобы значение было больше, чем
MinSpareThreads
. worker
и event
значение должно быть больше или равно сумме
MinSpareThreads
и
ThreadsPerChild
. MinSpareThreads
StartServers
MaxSpareServers
Описание: | Минимальное количество простаивающих потоков, доступных для обработки всплесков запросов |
---|---|
Синтаксис: | MinSpareThreads number |
По умолчанию: | See usage for details |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , mpm_netware , mpmt_os2 |
Минимальное количество простаивающих потоков для обработки всплесков запросов. Различные MPM по-разному относятся к этой директиве.
worker
и event
использовать значение по умолчанию
MinSpareThreads 75
и работать с бездействующими потоками на уровне всего сервера. Если на сервере недостаточно простаивающих потоков, то создаются дочерние процессы до тех пор, пока количество простаивающих потоков не превысит число . Дополнительные процессы/потоки могут быть созданы, если ListenCoresBucketsRatio
включено.
mpm_netware
использует значение по умолчанию
MinSpareThreads 10
и, поскольку это MPM с одним процессом, отслеживает это на уровне всего сервера.
mpmt_os2
работает аналогично mpm_netware
. Поскольку
mpmt_os2
значение по умолчанию равно 5
.
MaxSpareThreads
StartServers
MinSpareServers
Описание: | Файл, в котором сервер записывает идентификатор процесса демона. |
---|---|
Синтаксис: | PidFile filename |
По умолчанию: | PidFile logs/httpd.pid |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork , mpm_winnt , mpmt_os2 |
Директива PidFile
устанавливает файл, в который сервер записывает идентификатор процесса демона. Если имя файла не является абсолютным, предполагается, что оно связано с расширением
ServerRoot
.
PidFile /var/run/apache.pid
Часто полезно иметь возможность послать серверу сигнал, чтобы он закрылся, а затем снова открыл свои ErrorLog
и TransferLog
перечитал свои конфигурационные файлы. Это делается путем отправки сигнала SIGHUP (kill -1) на идентификатор процесса, указанный в файле
PidFile
.
На него PidFile
распространяются те же предупреждения о размещении и безопасности файла журнала.
Что касается Apache HTTP Server 2, мы рекомендуем вам использовать только сценарий apache2ctl
или сценарий инициализации, предоставляемый вашей ОС, для (повторного) запуска или остановки сервера.
Описание: | Размер буфера приема TCP |
---|---|
Синтаксис: | ReceiveBufferSize bytes |
По умолчанию: | ReceiveBufferSize 0 |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork , mpm_winnt , mpm_netware , mpmt_os2 |
Сервер установит размер буфера приема TCP равным указанному количеству байтов.
Если установлено значение 0
, сервер будет использовать ОС по умолчанию.
Описание: | Расположение файла, используемого для хранения данных координации для дочерних процессов |
---|---|
Синтаксис: | ScoreBoardFile file-path |
По умолчанию: | ScoreBoardFile logs/apache_runtime_status |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork , mpm_winnt |
HTTP-сервер Apache использует табло для связи между родительским и дочерним процессами. Для некоторых архитектур требуется файл для облегчения этой связи. Если файл не указан, Apache httpd сначала попытается создать таблицу результатов полностью в памяти (используя анонимную общую память), а в случае неудачи попытается создать файл на диске (используя файловую общую память). Указание этой директивы заставляет Apache httpd всегда создавать файл на диске.
ScoreBoardFile /var/run/apache_runtime_status
Совместно используемая память на основе файлов полезна для сторонних приложений, которым требуется прямой доступ к табло.
Если вы используете a ScoreBoardFile
, вы можете увидеть улучшение скорости, поместив его на RAM-диск. Но будьте осторожны, прислушивайтесь к тем же предупреждениям о размещении файла журнала и безопасности.
Описание: | Размер буфера TCP |
---|---|
Синтаксис: | SendBufferSize bytes |
По умолчанию: | SendBufferSize 0 |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork , mpm_winnt , mpm_netware , mpmt_os2 |
Устанавливает размер буфера отправки TCP сервера равным указанному количеству байтов. Часто бывает полезно установить это значение выше стандартного значения ОС по умолчанию для высокоскоростных соединений с высокой задержкой ( например , 100 мс или около того, таких как трансконтинентальные быстрые каналы).
Если установлено значение 0
, сервер будет использовать значение по умолчанию, предоставленное вашей ОС.
Для повышения производительности на высокоскоростных соединениях с высокой задержкой может потребоваться дополнительная настройка операционной системы.
В некоторых операционных системах изменения в поведении TCP, вызванные увеличением, SendBufferSize
могут быть незаметны, если только
EnableSendfile
для этого параметра не установлено значение OFF. Это взаимодействие применяется только к статическим файлам.
Описание: | Верхний предел настраиваемого количества процессов |
---|---|
Синтаксис: | ServerLimit number |
По умолчанию: | See usage for details |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork |
Для prefork
MPM эта директива устанавливает максимальное сконфигурированное значение для MaxRequestWorkers
времени жизни процесса Apache httpd. Для MPM worker
и event
эта директива в сочетании с ThreadLimit
задает максимальное сконфигурированное значение MaxRequestWorkers
на время существования процесса Apache httpd. Для event
MPM эта директива также определяет, сколько старых серверных процессов могут продолжать работать и завершать обработку открытых соединений. Любые попытки изменить эту директиву во время перезапуска будут игнорироваться, но
MaxRequestWorkers
могут быть изменены во время перезапуска.
При использовании этой директивы следует соблюдать особую осторожность. Если
ServerLimit
установлено значение намного выше необходимого, будет выделена дополнительная неиспользуемая разделяемая память. Если для обоих ServerLimit
и MaxRequestWorkers
установлены значения выше, чем может обрабатывать система, Apache httpd может не запуститься или система может стать нестабильной.
С prefork
MPM используйте эту директиву, только если вам нужно установить MaxRequestWorkers
значение выше 256 (по умолчанию). Не устанавливайте значение этой директивы выше, чем вы хотели бы установить MaxRequestWorkers
.
Используйте worker
эту директиву, только если ваши
настройки MaxRequestWorkers
и ThreadsPerChild
требуют более 16 серверных процессов (по умолчанию). Не устанавливайте значение этой директивы выше, чем количество серверных процессов, необходимых для того, что вам может понадобиться для MaxRequestWorkers
и ThreadsPerChild
.
С помощью event
, увеличьте значение этой директивы, если количество процессов, определенное вашими настройками MaxRequestWorkers
и ThreadsPerChild
, плюс количество изящно завершенных процессов превышает 16 серверных процессов (по умолчанию).
Существует жесткое ограничение на ServerLimit 20000
компиляцию на сервер (для prefork
MPM 200000). Это сделано для того, чтобы избежать неприятных последствий, вызванных опечатками. Чтобы еще больше увеличить его, превысив этот предел, вам потребуется изменить значение MAX_SERVER_LIMIT в исходном файле mpm и перестроить сервер.
Описание: | Количество дочерних серверных процессов, созданных при запуске |
---|---|
Синтаксис: | StartServers number |
По умолчанию: | See usage for details |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , prefork , mpmt_os2 |
Директива StartServers
устанавливает количество дочерних серверных процессов, создаваемых при запуске. Поскольку количество процессов динамически контролируется в зависимости от нагрузки (см
MinSpareThreads
. ,
MaxSpareThreads
,
MinSpareServers
, MaxSpareServers
), обычно нет необходимости настраивать этот параметр.
Значение по умолчанию отличается от MPM к MPM. worker
и
event
по умолчанию StartServers 3
;
prefork
по умолчанию 5
; mpmt_os2
по умолчанию 2
.
Описание: | Количество потоков, созданных при запуске |
---|---|
Синтаксис: | StartThreads number |
По умолчанию: | See usage for details |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | mpm_netware |
Количество потоков, созданных при запуске. Поскольку количество потоков динамически регулируется в зависимости от нагрузки (см
MinSpareThreads
. ,
MaxSpareThreads
,
MinSpareServers
, MaxSpareServers
), обычно нет необходимости настраивать этот параметр.
По mpm_netware
умолчанию это
StartThreads 50
и, так как есть только один процесс, это общее количество потоков, созданных при запуске для обслуживания запросов.
Описание: | Устанавливает верхний предел настраиваемого количества потоков на дочерний процесс. |
---|---|
Синтаксис: | ThreadLimit number |
По умолчанию: | See usage for details |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , mpm_winnt |
Эта директива устанавливает максимальное сконфигурированное значение для ThreadsPerChild
времени жизни процесса Apache httpd. Любые попытки изменить эту директиву во время перезапуска будут игнорироваться, но ThreadsPerChild
могут быть изменены во время перезапуска до значения этой директивы.
При использовании этой директивы следует соблюдать особую осторожность. Если
ThreadLimit
установлено значение, намного превышающее ThreadsPerChild
, будет выделена дополнительная неиспользуемая общая память. Если для обоих
ThreadLimit
и ThreadsPerChild
установлены значения выше, чем может обрабатывать система, Apache httpd может не запуститься или система может стать нестабильной. Не устанавливайте значение этой директивы выше максимального прогнозируемого значения ThreadsPerChild
для текущего запуска Apache httpd.
Значение по умолчанию для ThreadLimit
при
1920
использовании с mpm_winnt
и
64
при использовании с другими.
Существует жесткое ограничение ThreadLimit 20000
(или
ThreadLimit 100000
с event
,
ThreadLimit 15000
с mpm_winnt
), скомпилированное на сервер. Это сделано для того, чтобы избежать неприятных последствий, вызванных опечатками. Чтобы еще больше увеличить его, превысив этот предел, вам потребуется изменить значение MAX_THREAD_LIMIT в исходном файле mpm и перестроить сервер.
Описание: | Количество потоков, созданных каждым дочерним процессом |
---|---|
Синтаксис: | ThreadsPerChild number |
По умолчанию: | See usage for details |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , mpm_winnt |
Эта директива устанавливает количество потоков, создаваемых каждым дочерним процессом. Ребенок создает эти потоки при запуске и больше никогда не создает. При использовании MPM, такого как mpm_winnt
, где есть только один дочерний процесс, это число должно быть достаточно большим, чтобы справиться со всей нагрузкой сервера. При использовании MPM, такого как worker
, где есть несколько дочерних процессов, общее количество потоков должно быть достаточно большим, чтобы справиться с общей нагрузкой на сервер.
Значение по умолчанию для ThreadsPerChild
при
64
использовании с mpm_winnt
и
25
при использовании с другими.
Описание: | Размер в байтах стека, используемого потоками, обрабатывающими клиентские соединения. |
---|---|
Синтаксис: | ThreadStackSize size |
По умолчанию: | 65536 on NetWare; varies on other operating systems |
Контекст: | конфигурация сервера |
Положение дел: | МПМ |
Модуль: | event , worker , mpm_winnt , mpm_netware , mpmt_os2 |
Совместимость: | Доступно в Apache HTTP Server 2.1 и более поздних версиях. |
Директива ThreadStackSize
устанавливает размер стека (для автоданных) потоков, которые обрабатывают клиентские соединения и вызывают модули, помогающие обрабатывать эти соединения. В большинстве случаев размер стека по умолчанию операционной системы является разумным, но есть некоторые условия, при которых может потребоваться его корректировка:
ThreadStackSize
значения выше, чем значение по умолчанию операционной системы. Этот тип настройки необходим только в том случае, если поставщик стороннего модуля указывает, что это требуется, или если диагностика сбоя Apache httpd указывает на то, что размер стека потока был слишком мал. ThreadStackSize
установлено значение ниже, чем значение по умолчанию операционной системы. Этот тип корректировки следует выполнять только в тестовой среде, которая позволяет выполнять полный набор операций веб-сервера, поскольку могут возникать нечастые запросы, для обработки которых требуется больше стека. Минимальный требуемый размер стека сильно зависит от используемых модулей, но любое изменение в конфигурации веб-сервера может сделать текущий ThreadStackSize
параметр недействительным. ulimit -s
В качестве размера стека по умолчанию используется мягкое ограничение (часто большое)
(8 МБ, если оно не ограничено). ThreadStackSize
если только не требуется большое количество потоков на дочерний процесс. На некоторых платформах (включая Linux) значение 128000 уже слишком мало и вызывает сбои некоторых распространенных модулей.