如何决定 MPM 模块(worker.c、prefork.c 或其他

如何决定 MPM 模块(worker.c、prefork.c 或其他

我们在一台服务器上运行了多个站点。(CentOS、Hostgator“Elite”)其中一些站点相当大,而我们的主要站点也足够大,Google 已索引了超过 1,000,000 个页面。

我向 HG(我有一台托管的专用服务器)抱怨有些图片无法加载,即使它们存在于服务器上。刷新页面通常可以让这些图片加载。失败的图片并不总是相同的,这有点随机。我在这台服务器上的至少 3 个网站上看到过这种情况。

他们建议我将 MPM 模块改为 prefork,因为它处理内存的方式略有不同

我在网上找到了建议,帮助我确定我的服务器当前正在运行worker.c。

一些图像是通过 php 脚本提供的,该脚本发送 jpg 标头,然后提供readfile($filename);图像,但我发现问题不仅仅是来自该脚本的图像。

建议切换到 prefork 是个好主意吗?它能解决我遇到的问题吗?

答案1

Worker MPM 通常比 Prefork 效率高得多(这是“最安全”且支持最广泛的 MPM,但通常也是最慢和最不复杂的)。

您需要问的第一个问题是资源是否被消耗或可用。如果服务器处于最低负载(特别是 CPU、RAM 和 IO),则问题可能出在其他地方。在没有充分理由的情况下随机更改 MPM 会浪费大量时间。

我会不是建议更换软件,直到确认当前设置存在问题。Nginx 非常高效,但与 Apache httpd 也有很大不同。您将花费大量时间来设置它,并且可能无法解决问题(如果问题出在您的服务器之外)。

答案2

无论如何,您都不能将 php(至少作为 apache 模块)与 worker 一起使用,只能作为 cgi 版本。如果可能的话,我建议使用 nginx 提供所有静态内容

相关内容