查看Apache配置文件,我看到Prefork和Worker MPM已定义。有什么不同? Apache使用的是哪一个?
发布于 2012-12-20 16:38:47
Prefork和worker是apache提供的两种类型的MPM。两者都有各自的优点和缺点。
默认情况下,mpm是线程安全的prefork。
Prefork MPM使用多个子进程,每个子进程有一个线程,每个进程一次处理一个连接。
Worker MPM使用多个子进程,每个子进程都有多个线程。每个线程一次处理一个连接。
有关更多详细信息,请访问https://httpd.apache.org/docs/2.4/mpm.html和https://httpd.apache.org/docs/2.4/mod/prefork.html
发布于 2012-12-15 02:29:37
有关更多细节,请查看this。它指的是Apache如何处理多个请求。Preforking是默认的,它会启动许多Apache进程(默认情况下是2个,不过我相信可以通过httpd.conf进行配置)。Worker MPM将为每个请求启动一个新线程,我猜这会更有效地利用内存。从历史上看,Apache使用过prefork,所以它是一个经过更好测试的模型。线程是在2.0中才添加的。
发布于 2016-11-24 14:16:03
对于CentOS 6.x和7.x (包括Amazon Linux),请使用:
sudo httpd -V
这将显示配置了哪些MPM。prefork、worker或event。Prefork是较早的threadsafe模型。Worker是多线程的,event支持php-mpm,这被认为是处理线程和请求的更好系统。
但是,根据配置的不同,结果可能会有所不同。我在php-mpm中看到了很多不稳定的地方,却没有任何速度上的提升。一个具有攻击性的爬行器可以很容易地耗尽php-mpm中的最大子进程。
prefork、worker或event的设置在sudo nano /etc/httpd/conf.modules.d/00-mpm.conf中设置(对于CentOS 6.x/7.x/Apache2.4)。
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines:
# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#LoadModule mpm_event_module modules/mod_mpm_event.so
https://stackoverflow.com/questions/13883646
复制相似问题