我有一个全面的 PHP 脚本(在 Linux 上),它偶尔需要进行大量的网络对话。为此,它分叉了许多孩子。问题是脚本如何识别它们的最佳数量?如果数字太大,服务器会耗尽物理内存并且孩子开始交换 - 性能损失。那么我怎样才能获得真正的可用物理内存量呢?出于显而易见的原因,“免费”命令不会告诉我真实情况。
问问题
69 次
1 回答
2
free
将在第二行为您提供正确的图片(不包括带有标题的行)。这是一个示例输出:
total used free shared buffers cached
Mem: 2060420 1754008 306412 0 97264 1013548
-/+ buffers/cache: 643196 1417224
Swap: 1951888 0 1951888
第一行中的空闲列毫无用处,因为磁盘缓存也在其中。您很少需要第一行有任何空闲内存。另一方面,在第二行中,磁盘缓存被减去。这就是机器当前的真实内存使用情况!
这是一个用于读取和解析输出的 PHP 函数GNU free
:
// Get system mem usage in kilobytes
// Returns: array($used, $free), or false on failure
function memory_usage() {
exec('free -k', $lines, $error);
if ($error) return false;
$cols = preg_split('/\s+/', $lines[2]);
return array((int) $cols[2], (int) $cols[3]);
}
// Usage:
list($used, $free) = memory_usage();
printf("used: %d\nfree: %d\n", $used, $free);
于 2012-06-25T20:51:41.383 回答