当涉及到内存时,如何决定VPS良好的PHP和WordPress的默认值?

我有(只)512MB空余。 在我的VPS上运行的唯一的东西是PHP / MySQL,并在它的顶部的WordPress的。 没有邮件服务器或任何其他应用程序,只是Wordpress和LAMP堆栈。

如何决定给PHP和Wordpress多less内存? 现在PHP可以有128MB,增加多less安全量呢? 我试图谷歌的问题,但从来没有真正find任何答案。

TL; DR – 不要因为这个而限制你的记忆极限。 对于像WordPress这样的标准PHP应用程序来说,128MB是巨大的 ,应该足以满足90%的需求。

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

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

根据max_memory选项的PHP文档 :

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

一个重要的区别是这个设置没有设置可用于所有 PHP进程的内存量 – 它为一个 PHP进程设置了最大可用内存。

当Apache接收到一个PHP页面的请求时,它会分发一个PHP进程,一旦完成工作就会死亡。 在该请求期间使用的任何内存将被释放回操作系统,整个周期将在下一次请求时重新开始。

你不应该调整max_memory设置,除非你看到来自PHP本身的“内存不足”错误,而且通常只有当你:

  1. 正在处理大型数据集,如果您正在运行一个WordPress网站,我非常怀疑。
  2. 有内存泄漏或其他问题,这意味着内存不会被释放回到操作系统,对这种types的问题的正确答案是调查来源问题,而不是只是碰撞限制。

Apache调优

如果您对调整性能感兴趣,则应该查看prefork模块中的Apache MaxClients和相关选项。

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

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

注意我提到了上面的同时连接 ,而不是您网站上的访问者 。 这两个是不一样的。

正如克雷格·沃特森(Craig Watson)已经告诉的那样,如果不是真的有必要的话,你不应该搞乱PHP内存限制

无论如何,如果不对工作负载有深刻的理解,就无法正确确定服务器的大小。 我build议你模拟一个真实的负载,同时监视你的服务器资源分配/使用情况。

对于这个问题,对于任何生产服务器来说,512 MB是非常less的。 事实上,即使是testing目的,它们也是不够的。

你测量。 你在你的工作场所运行一个类似规格的虚拟机,并对其进行负载testing。 那么简单 鉴于任何一半的像样的平板电脑可以运行可视化,这也不是一个问题。