如何判断apache是作为prefork还是worker运行(或配置为运行)?
如何判断apache是作为prefork还是worker运行(或配置为运行)?
Answers:
MPM是在编译时配置的。之后找出它的一种方法是列出模块中编译的列表。该列表将包括所选的MPM。可以使用-l标志运行apache二进制文件来完成列表。
andreas@halleck:~$ apache2 -l
Compiled in modules:
core.c
mod_log_config.c
mod_logio.c
worker.c
http_core.c
mod_so.c
andreas@halleck:~$
在这里,我们找到了worker.c模块,因此我正在运行worker MPM。
apache2ctl -M
用来列出活动模块。
Series8217和Andol给出的答案都是错误的。
问题是,如何判断Apache是否正在运行 prefork或worker。其他答案给出的建议仅告诉您默认的 MPM是什么(基于内置模块),而不是当前是否使用该默认值或其他选择。
如果httpd -V
显示prefork,则仅表示prefork是已编译的默认MPM。可以通过更改Apache配置文件设置来覆盖它,如以下过程所示:
/etc/sysconfig/httpd
在CentOS / RedHat上)HTTPD=/usr/sbin/httpd.worker
使用以下过程可以显示实际正在运行的MPM:
curl localhost/server-info
httpd -V
再次运行-它仍然显示前叉,而不是工作程序底线:
httpd -V
显示默认选项,而不是实际使用的选项很多网站说,答案可以httpd -V
用来判断Apache是在运行prefork还是worker。他们都是错的。尝试以上过程以自己看看。
在Ubuntu 14.04中
a2query -M
告诉event
,prefork
,worker
您可以通过添加mpm_<chosen>
从mods-available
到mods-enabled
in的符号链接来更改它/etc/apache2
。
一次只允许一个。
event
MPM,根据Apache的网站,“与消费线程仅适用于具有积极处理连接的目标工人MPM的变体”。
在RHEL / Fedora / etc上,运行httpd -V
。您将获得一些输出,包括以下内容:
Server version: Apache/2.2.21 (Unix)
...
Architecture: 64-bit
Server MPM: Prefork
...
这里的“服务器MPM”是“ Prefork”,因此我的服务器正在运行prefork MPM。
克里斯·约翰逊是正确的。转到httpd.conf =>添加以下行:
<Location /server-info>
SetHandler server-info
</Location>
重新启动apache:/etc/init.d/httpd重新启动。然后通过浏览器访问localhost / server-info,然后查看MPM Name部分。
克里斯·约翰逊的答案是正确的。
启用信息模块后(如Apache文档(http://httpd.apache.org/docs/2.2/mod/mod_info.html)中所述),此衬板将为您提供您正在使用的MPM:
links -dump http://localhost/server-info/?server | grep "MPM Name"