apache 2.x的 MPM 分析:
MPM (Multi-processing Module):相对于apache1.x的版本,性能上提升最显着的改进。
Apache 的编译选项中可以看到下面一些MPM的种类:
--with-mpm=MPM Choose the process model for Apache to use.MPM= {beos|worker|prefork|mpmt_os2|perchild|leader|threadpool}
常用的应该就只有3个:worker|prefork|perchild
1.prefork:在功能上就是使用Apache的运行方式,一个父进程,然后根据设置以及 连接 情况生成相应的子进程数。这种模式可靠性和健壮性都是最好的。但是在性能上,开销过大。达不到我们这些[吸血鬼]的要求了^_^。如果连接数过多的话,会导致我们无法远程登陆,一定要等到连接数下降后才能连接,这也是最让我头痛的事情。
2. worker:混合线程/进程的MPM。一个父进程,后面是带有线程的子进程。每个子进程的线程数是固定且相同的。这是最[平庸]的一个模式,但也是使用人最多的一种模式。因为它性能等各方面比较均衡。性能上要比prefork好一些,只是牺牲了一点点的健壮性和可靠性而已。一般推荐使用这个选项。
3.perchild:也是混合线程/进程的MPM。当启动perchild MPM时,它会建立指定数量的子进程,且每个子进程都具有指定数量的线程,如负载增加了,那它不会建立新的进程(子进程是固定的),只是在子进程下建立新的线程。它还有一个特点就是可以为每一个子进程配置不同的用户和组。也可以为每个虚拟主机指定一个子进程。这种模式性能是最佳的,但是可靠性和健壮性就相对是最差的。各取所需,我个人觉得这种模式也不错,如果你不用第三方的模块的话。
注:其他的模式我个人没有接触,因此说不出他们的区别和特点。上面说的最佳和最差仅在这3种模式中做比较。水平有限,如有错误,欢迎一起讨论指正!!!
《 Apache2.x的MPM分析 》由 第二电脑网 原创提供,转载请注明: http://www.002pc.com/master/College/Server/Apache/18014.html
查看更多关于Apache2.x的MPM分析|进程-Apache教程的详细内容...