Apache 2.4 перечисляет значения директив prefork из командной строки

Я не могу найти значения директив MPM Prefork, таких как MaxRequestWorkers/MaxSpareThreads и т. Д., В моем конфигурационном файле. Есть ли способ перечислить эти значения из командной строки?

-bash-4.2# httpd -v
Server version: Apache/2.4.23 (Amazon)

-bash-4.2# httpd -V
Server version: Apache/2.4.23 (Amazon)
Server built:   Jul 29 2016 21:42:17
Server's Module Magic Number: 20120211:61
Server loaded:  APR 1.5.1, APR-UTIL 1.4.1
Compiled using: APR 1.5.1, APR-UTIL 1.4.1
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_PIDLOG="/var/run/httpd/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

PS: я также разместил это на SuperUser. Я не уверен, какое из них является правильным местом.

2 ответа

  1. вы никогда не найдете MaxSpareThreads, потому что prefork не является многопоточным, поэтому он должен быть **MaxSpareServers**
  2. Не из командной строки, вам нужно "катать" ваш основной файл конфигурации, или там, где ваш дистрибутив разместил их (httpd.conf или apache.conf или mpm.conf?)
  3. Если у вас есть mod_info, вы можете "свернуть" свой сервер для получения информации и проанализировать / прочитать настройки с него, это самая близкая вещь, чтобы получить эту информацию из командной строки, которую вы, вероятно, найдете. Там вы увидите раздел под названием Module name: prefork.c и после некоторого текста что-то с надписью "Текущая конфигурация:", которая показывает ваши фактические настройки mpm. (примечание: mod_info не должна быть публично доступна на вашем сервере любому, кто обращается к нему, поскольку он практически раскрывает всю вашу конфигурацию).

Если вам нужна дополнительная информация о том, как / должна быть сконфигурирована prefork, вы можете проверить это в официальных документах о mpm prefork

Примечание: я бы не рекомендовал prefork anways, идти на событие и, если это так, потому что mod_php, отказаться от него в пользу php-fpm.

В качестве альтернативы другим подходам, предложенным здесь, я обнаружил, что в моем дистрибутиве Apache есть каталог/usr/share/doc/httpd-2.4.54который содержит шаблоны и файлы различных настроек. Среди них,httpd-default.confутверждает, что он отражает настройки по умолчанию для HTTP-сервера Apache.

Я не доказал это, но подозреваю, что это верно и для другого файла, расположенного здесь, . Этот файл содержит разделы настроек, относящиеся к MPM, со следующей преамбулой:

      # Only one of the below sections will be relevant on your
# installed httpd.  Use "apachectl -l" to find out the
# active mpm.

Видимо-lвыше опечатка; в моем случае я бегуapachectl -V, который говорит мне:

      Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....

Поэтому я обращаюсь к разделуhttpd-mpm.confотносящийся к prefork MPM , который содержит:

      # prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of connections a server process serves
#                         before terminating
<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers          5
    MaxSpareServers         10
    MaxRequestWorkers      250
    MaxConnectionsPerChild   0
</IfModule>```
Другие вопросы по тегам