当谈到内存时,如何确定 VPS 中适用于 PHP 和 Wordpress 的良好默认值?

当谈到内存时,如何确定 VPS 中适用于 PHP 和 Wordpress 的良好默认值?

我 (仅) 有 512MB 的空闲空间。我的 VPS 上唯一运行的是 PHP/MySQL 以及 Wordpress。没有邮件服务器或任何其他应用程序,只有 Wordpress 和 LAMP 堆栈。

如何决定为 PHP 和 Wordpress 分配多少内存?目前 PHP 允许使用 128MB,将其增加多少是安全的?我尝试用 Google 搜索这个问题,但从未找到任何答案。

答案1

TL;DR -为了这个目的而增加内存限制。对于像 WordPress 这样的标准 PHP 应用程序,128MB 是巨大的应该可以满足你90%的需求。

但是,这里有一些重要的事实:

PHP 内存分配是针对每个脚本/进程的

根据PHP 文档对于max_memory选项:

这设置了允许脚本分配的最大内存量(以字节为单位)。这有助于防止编写不当的脚本耗尽服务器上所有可用内存。

需要注意的一个重要区别是,此设置不会设置全部PHP 进程 - 它设置最大限度可用内存PHP 进程。

当 Apache 收到 PHP 页面请求时,它会派生一个 PHP 进程,该进程在工作完成后立即终止。该请求期间使用的任何内存都会被释放回操作系统,整个循环将从下一个请求重新开始。

你应该绝不max_memory除非您看到 PHP 本身出现“内存不足”错误,否则必须调整设置,而这通常只发生在您执行以下操作时:

  1. 正在处理大型数据集,如果您正在运行 WordPress 网站,我对此极为怀疑。
  2. 存在内存泄漏或其他问题,这意味着内存没有被释放回操作系统,对此类问题的正确响应是调查源问题,而不仅仅是增加限制。

Apache 调优

如果您有兴趣调整性能,您应该查看 ApacheMaxClients和模块内的相关选项prefork

我通常会为内核和其他系统进程保留 50MB,其余部分分配给 Apache 和 MySQL -各种各样的 在线的 指南详细说明如何做到这一点(我强烈建议你阅读),但总体思路是:

  1. 运行top并检查平均 Apache 进程使用了​​多少内存(这是RES列)
  2. 计算总内存量,减去要为其他进程保留的内存量,然后除以上面的数字。这就是同时Apache 在需要拒绝客户端之前可以处理的连接数。
  3. 编辑您的 Apache 配置并将MaxClients选项设置为此数字。

笔记我提到同时连接以上,不您网站的访客。两者并不相同。

答案2

正如 Craig Watson 所说,你应该不是如果不是确实必要的话,会干扰 PHP 内存限制。

无论如何,如果不深入了解您的工作负载,就不可能正确调整服务器大小。我建议您模拟实际负载,同时监控服务器资源分配/使用情况。

重要的是,512 MB非常对于任何生产服务器来说都很少。事实上,它们甚至不足以满足测试目的。

答案3

您进行测量。在工作场所使用具有类似规格的虚拟机运行它并对其进行负载测试。就这么简单。考虑到任何还算不错的平板电脑都可以运行可视化,这也不是真正的问题。

相关内容