我知道这里有两个模块之间的比较主题,但这是不同的。
我联系了 cPanel 支持人员,希望他们能帮我释放 VPS 上的一些内存使用量。他们发现 Apache 2.4“httpd”子进程使用了大约 80MB RSS,而在他们的测试服务器上,类似的 Apache 2.4 版本每个 Apache 子进程仅使用了大约 3MB RSS。
经过一段时间的讨论后,他们建议切换到 Apache 2.4 中的 Worker MPM,而不是使用 Prefork。
我搜索了一下他们的说法,发现 Worker MPM 占用的内存较少,但它不是线程安全的。网站上的一些其他主题说 Worker 不适用于 php 应用程序或 mod_php。我不确定这是否正确。
我很困惑,我该怎么办?我的帐户上运行着 php 脚本,我不想中断任何脚本或损坏数据。
大家有什么建议?切换到 Worker MPM 是否可以解决内存不足的问题,而无需中断 php 应用程序?
关于 Apache 的使用,有没有什么解决方案?因为 80MB RSS 与 3MB RSS 相比太高了。
答案1
如果您必须使用 PHP 作为 Apache 模块,那么您应该使用 Prefork,因为正如您所说,PHP 默认编译为非线程安全的,并且 Worker MPM 正在使用线程。
如果可以使用 PHP 作为 FastCgi(PHP-FPM),那么就可以使用 Worker MPM。
顺便说一句,目前部署 PHP 的最佳方式可能是使用 Nginx 和 PHP-FPM。