apachectl 报告它处于工作模式,但配置似乎设置为 prefork

apachectl 报告它处于工作模式,但配置似乎设置为 prefork

我正在使用运行 Apache2.4 和 CentOS7 的 VPS。我遇到了一些线程问题,想尝试以 prefork 模式运行 Apache。

如果我运行apachectl -V来检查我处于哪种模式,我会得到以下结果:

Server MPM:     worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)

然而,当我检查 MPM conf(/etc/httpd/conf.modules.d/00-mpm.conf)时,我看到 prefork 模块已经加载:

#HTTPD=/usr/sbin/httpd.worker
#OPTIONS=
HTTPD_LANG=C
#PIDFILE=/var/run/httpd/httpd.pid

# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:
LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
#LoadModule mpm_event_module modules/mod_mpm_event.so

进一步检查,/etc/sysconfig/httpd我发现工作人员的那行已被注释掉:

#HTTPD=/usr/sbin/httpd.worker
#OPTIONS=
HTTPD_LANG=C
#PIDFILE=/var/run/httpd/httpd.pid

我已检查此配置是否确实应用于我正在使用的 Apache 实例。例如,模式/etc/httpd/conf.modules.d/*.conf已包含在我的httpd.conf文件中。这些选项是否可能在某处被覆盖,还是我遗漏了什么?谢谢!

答案1

我找到了问题所在;还有另一个 conf 文件/etc/apache2/conf.modules.d/000_mod_mpm_worker.conf会加载mpm_worker_module。我尝试取消注释LoadModule此文件中的行,但随后在重新启动时收到来自 Apache 的错误,告诉我没有加载 MPM 模块。最终的解决方案是将此文件更改为并在其中000_mod_mpm_prefork.conf加载。mpm_prefork_module

相关内容