我注意到有什么top
或ps
报告内存使用了PHP的过程,对比一下过程本身认为使用(与memory_get_usage
)其之间完全不同。PHP实际使用多少内存?
该进程实际使用多少内存?
当运行下面的代码与我的应用程序之一沿着:
echo "Memory usage: " . pretty_bytes(memory_get_usage()) . PHP_EOL;
echo "Peak memory usage: " . pretty_bytes(memory_get_peak_usage()) . PHP_EOL;
echo "'Actual' memory usage: " . pretty_bytes(memory_get_usage(true)) . PHP_EOL;
echo "'Actual' peak memory usage: " . pretty_bytes(memory_get_peak_usage(true)) . PHP_EOL;
$ps_output = exec("ps --pid " . getmypid() . " --no-headers -o rss");
echo "'Memory usage according to ps: " . pretty_bytes(intval($ps_output) * 1000);
一个随机点的输出是:
Memory usage: 4.77 MB
Peak memory usage: 4.99 MB
'Actual' memory usage: 5.00 MB
'Actual' peak memory usage: 5.00 MB
Memory usage according to ps: 17.66 MB
在我的具体情况,这是一个问题,因为我m运行了不少工人和守护进程。
当我将PHP内存限制设置为例如根据PHP自己的测量结果,每个守护进程都有128 MB的空间,这些进程只有在达到128 MB时才会被杀死。但是,根据ps
,到那时为止每个进程将使用大约200 MB。
Thanks @bwoebi。这和Ivo的答案让我们对问题有了充分的了解解决手头的问题。 – Robbert