我 (仅) 有 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 本身出现“内存不足”错误,否则必须调整设置,而这通常只发生在您执行以下操作时:
- 正在处理大型数据集,如果您正在运行 WordPress 网站,我对此极为怀疑。
- 存在内存泄漏或其他问题,这意味着内存没有被释放回操作系统,对此类问题的正确响应是调查源问题,而不仅仅是增加限制。
Apache 调优
如果您有兴趣调整性能,您应该查看 ApacheMaxClients
和模块内的相关选项prefork
。
我通常会为内核和其他系统进程保留 50MB,其余部分分配给 Apache 和 MySQL -各种各样的 在线的 指南详细说明如何做到这一点(我强烈建议你阅读),但总体思路是:
- 运行
top
并检查平均 Apache 进程使用了多少内存(这是RES
列) - 计算总内存量,减去要为其他进程保留的内存量,然后除以上面的数字。这就是同时Apache 在需要拒绝客户端之前可以处理的连接数。
- 编辑您的 Apache 配置并将
MaxClients
选项设置为此数字。
笔记我提到同时连接以上,不您网站的访客。两者并不相同。
答案2
正如 Craig Watson 所说,你应该不是如果不是确实必要的话,会干扰 PHP 内存限制。
无论如何,如果不深入了解您的工作负载,就不可能正确调整服务器大小。我建议您模拟实际负载,同时监控服务器资源分配/使用情况。
重要的是,512 MB非常对于任何生产服务器来说都很少。事实上,它们甚至不足以满足测试目的。
答案3
您进行测量。在工作场所使用具有类似规格的虚拟机运行它并对其进行负载测试。就这么简单。考虑到任何还算不错的平板电脑都可以运行可视化,这也不是真正的问题。