2011-05-16 45 views
3

當然,如果客戶端速度太慢而無法讀取服務器的寫入數據,那麼數據可以被緩存和增長[1]。在Node.js中,inet流套接字使用多少內存?

但是默認的緩衝區大小是多少?我假設它是/ proc/sys/net/ipv4/tcp_rmem和tcp_wmem(假設Linux)中配置的任何東西...

我正在嘗試做一些基本的容量規劃。如果我有一個512 MB RAM的VPS,並且我認爲操作系統等會使用〜100MB,我的應用程序無論它想做什麼都有〜400MB。如果每個連接的客戶端(普通舊TCP/IP套接字)默認情況下需要8KB(4KB讀取,4KB寫入),則我有400MB/8KB =〜50000個客戶端的容量。

[1] http://nodejs.org/docs/v0.4.7/api/all.html#socket.bufferSize

+1

我真的不認爲你需要擔心這裏的細節。你是在正確的場地,無論確切的數字是25,000或40,000或60,000,一旦你達到了同時使用________的用戶數量,你將能夠在你的VPS中承受更多的內存:P 此外,在那些你開始遇到的操作系統連接數太多的問題開放 – 2011-05-16 19:21:19

+0

當然是的。我只是想獲得一些基線數量的最大連接數/主機。我的計劃是當客戶端想要連接到「集羣」時,有多個這些主機並將客戶端指向負載最少的主機。但我需要知道什麼時候需要更多面向客戶端的主機。當然需要平均負載和其他指標,但我的應用程序並不是非常受CPU限制的,因此決定何時以及如何增長的主要因素是RAM。謝謝! – horton 2011-05-16 19:25:30

回答

1

我不知道把我的頭頂部,它可能從平臺而異,但這裏是你如何能找出來!

使用此代碼:

var net = require('net'); 

net.createServer(function (socket) { 
    socket.on('data', function(data) { 
     console.log('chunk length: ' + data.length); 
    }); 
}).listen(function() { 
    console.log("Server listening on %j", this.address()); 
}); 

然後貓一個大文件(像ISO)通過「NC本地主機$端口」使用該腳本會在啓動時的端口號,並觀看輸出以查看最大塊大小。在我的OS X機器上,它看起來像最大的緩衝區是40960字節,但它可能會在你的不同。