PHP 最大内存限制和 Apache 进程内存消耗

PHP 最大内存限制和 Apache 进程内存消耗

PHP 最大内存限制如何影响 Apache 进程消耗的内存?例如,如果我将其设置为 256MB,这是否意味着每个进程都会尝试分配这个内存量,还是所有进程一起分配,或者其他?

答案1

PHP 的内存限制是 PHP 中分配的最大内存量。在默认 MPM 中,这意味着每个 Apache 子进程最多使用 (Apache 开销 + memory_limit) 字节的 RAM。当然,这排除了其他扩展也分配内存的可能性,但这是另一个问题。最后,应该注意的是,子进程在启动时不会预先分配 memory_limit 字节的 RAM;这只是一个根据需要强制执行的硬性上限。

答案2

但大约100毫秒,它确实使用了 memory_limit。我的网络主机安装了 CloudLinux,RAM 限制为 256MB,这很合理。我的 AJAX 代码同时调用 4 个 php 页面,突然停止工作,出现 500 个错误。(怀疑有很多问题,但都是错误的)在此服务器上,memory_limit 为 128MB,主机将其减少到 64MB。加载 5 个 php 页面(实际上是基本 html,以 .php 扩展名保存)作为我的主页,我能够消除任何 Javascript 或 PHP 代码。CloudLinux 给出了 500 个错误 - 但这是它正在加载的 5 个“php”:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>First Page</title>
</head>
<body>
<h1>First Page</h1>
</body>
</html>

因此,具体来说,它确实使用了 RAM 的 memory_limit - 只持续很短的时间,大概是为了测试分配可能性。这成为 CloudLinux(绝妙的想法)、高 PHP memory_limit 和调用多个 PHP 页面的代码的问题。

相关内容