-3
我有一個全面的PHP腳本(在Linux上),偶爾需要做很多網絡聊天。爲此它分叉了一些孩子。問題是腳本如何確定它們的最佳數量?如果數量太大,服務器耗盡物理內存,孩子們開始交換 - 性能會受到影響。那麼我怎樣才能獲得真正的可用物理內存量呢?一個'自由'的命令並不能告訴我真實的情況,原因很明顯。如何找出分叉孩子的最佳數量
我有一個全面的PHP腳本(在Linux上),偶爾需要做很多網絡聊天。爲此它分叉了一些孩子。問題是腳本如何確定它們的最佳數量?如果數量太大,服務器耗盡物理內存,孩子們開始交換 - 性能會受到影響。那麼我怎樣才能獲得真正的可用物理內存量呢?一個'自由'的命令並不能告訴我真實的情況,原因很明顯。如何找出分叉孩子的最佳數量
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);
爲什麼不'free'告訴你這個?只需調整緩衝區/緩存... AFAIK,沒有特殊的權利需要看到實際的數字。 – Wrikken