2012-06-25 25 views
-3

我有一個全面的PHP腳本(在Linux上),偶爾需要做很多網絡聊天。爲此它分叉了一些孩子。問題是腳本如何確定它們的最佳數量?如果數量太大,服務器耗盡物理內存,孩子們開始交換 - 性能會受到影響。那麼我怎樣才能獲得真正的可用物理內存量呢?一個'自由'的命令並不能告訴我真實的情況,原因很明顯。如何找出分叉孩子的最佳數量

+0

爲什麼不'free'告訴你這個?只需調整緩衝區/緩存... AFAIK,沒有特殊的權利需要看到實際的數字。 – Wrikken

回答

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);