Я не могу найти значения директив MPM Prefork, напримерМаксRequestWorkers/Макс. кол-во свободных потокови т. д. в моем конфигурационном файле. Есть ли способ перечислить эти значения из командной строки?
-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. Я не уверен, где правильное место.
решение1
- вы никогда не найдете MaxSpareThreads, потому что prefork не является потоковым, поэтому он должен быть
**MaxSpareServers**
- Не из командной строки, вам нужно"cat" ваш основной файл конфигурацииили там, где их разместил ваш дистрибутив (httpd.conf или apache.conf или mpm.conf?)
- Если у вас естьmod_infoты можешь "завиток"ваш сервер для получения информации и анализа/чтения настроек с него, это самое близкое, что вы, вероятно, найдете, чтобы получить эту информацию из командной строки. Там вы увидите раздел под названиемИмя модуля: prefork.cи после какого-то текста что-то вроде "Текущая конфигурация:" который показывает ваш фактическийнастройки мпм. (примечание: mod_info не должен быть доступен публично на вашем сервере любому, кто к нему обращается, поскольку он фактически раскрывает всю вашу конфигурацию).
Если вам нужна дополнительная информация о том, как настраивается/должна настраиваться prefork, вы можете проверить ее наофициальные документы о mpm prefork
Примечание: я бы не рекомендовал prefork в любом случае, используйте event, а если это из-за mod_php, откажитесь от него в пользу php-fpm.
решение2
В качестве альтернативы другим подходам, предложенным здесь, я обнаружил, что мой дистрибутив Apache имеет каталог /usr/share/doc/httpd-2.4.54
, содержащий шаблоны и файлы различных настроек. Среди них, httpd-default.conf
утверждает, что онотражает настройки по умолчанию для Apache HTTP Server.
Я не доказал этого, но подозреваю, что это относится и к другому файлу, расположенному здесь, httpd-mpm.conf
. Этот файл содержит разделы настроек, связанных с 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
касающийсяпредварительная вилка 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>```