我正在考虑从非线程 prefork mpm 切换到 apache (2.0.52) 的混合多进程多线程工作者 mpm。
它在运行 RHEL4 的 Intel(R) Xeon(TM) 四核机器上运行。
我听说 worker mpm 的扩展性更好,我们最近遇到了一些扩展问题。
/usr/sbin/httpd -l 提到 prefork 是在 mpm 中编译的。在不更改任何配置的情况下切换到工作人员 mpm 的最佳方法是什么?我想避免从源头构建。有没有地方可以找到用 worker mpm 编译的 apache rpm?
我将 apache 用于 a) blog(wordpress) b) forum(phpbb) c) 为 java web 应用程序提供静态内容(使用 mod_jk 将动态请求转发到 tomcat)
在我采取行动之前,我需要考虑哪些可能的问题?此外,切换到 worker mpm 后典型的性能改进是什么?
由于您在该服务器上运行 PHP,因此我会谨慎使用 Worker MPM。Worker 和 PHP 存在一些已知问题。PHP 安装常见问题解答建议不要这样做。
使用线程化的 mpm 的好处主要是内存消耗较低,因此您可以将 MaxClients 设置得更高而无需冲洗盒子。
如果您有臃肿的模块,这些模块为每个子进程分配大量内存(即在子启动时),则尤其如此,这些内存在线程之间共享。
但是,这是一个重大变化,不能掉以轻心,尤其要担心您的 PHP 兼容性。在将其用于生产之前,请务必在非生产环境中彻底测试任何配置更改。
当然,就像任何与性能相关的更改一样,您应该对其进行性能测试,看看它是否真的更好。这可能很重要 - 至少这是我发现进行此类更改最困难的事情。