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 ответа
- вы никогда не найдете MaxSpareThreads, потому что prefork не является многопоточным, поэтому он должен быть
**MaxSpareServers**
- Не из командной строки, вам нужно "катать" ваш основной файл конфигурации, или там, где ваш дистрибутив разместил их (httpd.conf или apache.conf или mpm.conf?)
- Если у вас есть 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>```