配置 nginx 和 PHP5-FPM

配置 nginx 和 PHP5-FPM

我有一个带有 1 个 CPU 核心的 VPS,当我在搜索有关配置 nginx 和 php5-fpm 的一些详细文档时,我不断遇到诸如“我有一个双核 CPU,因此我将把它限制为 2 个进程...”之类的内容。

现在我的问题是,由于我有一个核心,将 nginx (以及 php5-fpm)限制为 1 个进程是个好主意吗? 如果我是正确的,这对于多线程 nginx 架构来说应该不是问题?

目前服务器似乎运行良好,但负载非常低,当从我的家庭连接使用 AB 时,我在 499 个连接后超时 - 但我不完全确定为什么它会超时(我的整个系统冻结了)。

答案1

在网上阅读东西的问题在于,它通常没有任何有用的理由(如果你幸运的话),不适用于你的情况,或者完全是平淡无奇的错误的(迄今为止最常见的)。

如果您的请求处理完全受 fpm worker 的 CPU 限制,那么是的,每个核心拥有超过一个进程不会提高吞吐量。但是,这是一个难以置信罕见的情况——通常您的 PHP 脚本正在访问数据库,或从文件系统读取内容,或建立外部连接以获取其他数据,或其他任何情况。所有这些都是 CPU 时间,如果每个核心只有一个 fpm 工作器,那么这些时间将被浪费。

您的环境的正确配置是“了解您的应用”和实验的结合。我会尝试在单个核心上使用两个 fpm 工作器,看看在负载(实际负载,而不是 ab 负载)下会发生什么。如果 CPU 完全受限,那么您可能正在执行超出其处理能力的 CPU 工作,您应该稍微调低一点(或只是获得更多 CPU)。如果您的吞吐量达到最大值,但 CPU 仍然相当空闲,那么您可以增加工作器数量,直到 CPU 接近最大值。

当然,这假设机器上没有太多其他需要 CPU 时间的事情。您必须给 nginx 一些 CPU 时间,如果您有一个数据库或任何东西,它也需要查看,但幸运的是,当您看到 CPU 随着工作者数量增加而增加时,这个问题往往会自行解决。

相关内容