如何找到 Apache 在 Linux 中使用的 MPM 模型(worker、prefork 或 event)
Posted
技术标签:
【中文标题】如何找到 Apache 在 Linux 中使用的 MPM 模型(worker、prefork 或 event)【英文标题】:How to find what MPM model Apache is using in Linux (worker, prefork or event) 【发布时间】:2011-09-07 16:46:08 【问题描述】:我可以从哪里获得有关我的 Linux 系统中使用哪种 MPM Apache 的信息?
【问题讨论】:
【参考方案1】:httpd -V
然后查找Server MPM
行。
例子:
# httpd -V
Server version: Apache/2.2.15 (Unix)
Server built: Aug 2 2013 08:02:15
Server's Module Magic Number: 20051115:25
Server loaded: APR 1.3.9, APR-Util 1.3.9
Compiled using: APR 1.3.9, 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"
【讨论】:
与comments beneath the currently accepted answer 中提到的类似,在某些系统(例如Ubuntu)上,您应该使用apache2 -V
。
apache2 -V
看起来不像上面的输出(对我来说),但是 apachectl -V
可以。【参考方案2】:
注意到之前的答案没有提到apachectl
!
[dlam@some-ubuntu-box~] $apachectl -V | grep -i mpm
服务器 MPM:事件
--
[dlam@some-fedora-box:~] $httpd -V | grep -i mpm
服务器 MPM:预分叉
【讨论】:
另一个选项是使用以下命令列出 Compiled in modules:/usr/sbin/apache2 -l
在输出中查找 worker.c、prefork.c 或 event.c,因为其中只有一个会出现,表明您的 apache2 正在使用的相应 MPM 模块。
@okwap 来自@JorgeeFG 回答这个a2query -M
在Ubuntu 上工作
对我来说这是唯一的工作方法,因为所有其他方法都没有显示任何 MPM。 apach2 -V 显示“服务器 MPM:”,仅此而已。在我的情况下,“事件”已启用。【参考方案3】:
在 Ubuntu 14.04 中
a2query -M
告诉event
、prefork
、worker
您可以通过在/etc/apache2
中添加mpm_<chosen>
的符号链接从mods-available
到mods-enabled
来更改它。
一次只允许一个。
【讨论】:
正是我需要的!谢谢! 由于某种原因,在我的 (AWS) Ubuntu 14.04 上,没有定义任何必需的环境变量,因此其他解决方案都不起作用。这个做到了。【参考方案4】:您可以通过检查哪些模块使用 Apache 编译来查看这一点。
查看以下命令的输出:
# httpd -l
从那里寻找prefork.c
。
【讨论】:
我喜欢@user131003 的回答,因为它用简单的英文告诉你:“Server MPM: Prefork threaded: no”【参考方案5】:如果是linux的话,默认应该是prefork。阅读here 了解有关 apache mpm 的更多信息。
【讨论】:
以上是关于如何找到 Apache 在 Linux 中使用的 MPM 模型(worker、prefork 或 event)的主要内容,如果未能解决你的问题,请参考以下文章
linux下如何找到apache的安装目录。找到apache的配置文件?