我对配置 Apache 还很陌生。有很多教程,但很少有全面的说明如何操作。
我想知道的是:
- 我如何更改 Apache 要使用的 MPM 配置文件?
- 我如何计算 apache2.conf 中客户端和连接的最佳数量,该服务器主要用于多个 CMS 系统,如 wordpress 等。包括缓存吗?
我使用的服务器是:XEON E3-1230 (4 x 3,2 GHz) 和 16 GB DDR3 EEC。我希望进一步的描述是无关紧要的。
这是我在 /etc/apache2/apache2.conf 中所拥有的内容
# prefork MPM
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# worker MPM
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
# event MPM
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Apache 模块:
# apache2ctl -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
prefork.c
http_core.c
mod_so.c
其他:
Server version: Apache/2.2.16 (Debian)
# apache2ctl -V
Server version: Apache/2.2.16 (Debian)
Server built: Mar 3 2013 12:09:44
Server's Module Magic Number: 20051115:24
Server loaded: APR 1.4.2, APR-Util 1.3.9
Compiled using: APR 1.4.2, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork"
-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=128
-D HTTPD_ROOT="/etc/apache2"
-D SUEXEC_BIN="/usr/lib/apache2/suexec"
-D DEFAULT_PIDLOG="/var/run/apache2.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_LOCKFILE="/var/run/apache2/accept.lock"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="mime.types"
-D SERVER_CONFIG_FILE="apache2.conf"
答案1
MPM 在编译时配置到您的 Apache 服务器中。因此,要使用不同的 MPM,您必须重新编译 Apache,或安装具有所需 MPM 的不同预编译二进制文件(如果您的操作系统可用)。但是对于大多数用途来说,MPMprefork
就足够了,特别是如果您要运行 PHP。PHP 不被认为是线程安全的,所以您不应该使用worker
,并且event
是实验性的...
因此,请继续使用prefork
,唯一与您相关的参数是本<IfModule mpm_prefork_module>
节中的参数。最适合您的值主要取决于您预期的并发用户数以及该值的变化情况。我建议从保留参数的原样开始,并且只有在您真正遇到性能问题时才开始性能调整。使用状态页面查看通常有多少客户端连接到您的服务器。如果您最终为超过 150 个并发用户提供服务,请增加 MaxClients。