我正在寫一個基於socket.io的服務器,我試圖避免the pyramid of doom並保持內存不足。 我寫了這個客戶端 - http://jsfiddle.net/QUDXU/1/我用node client-cluster 1000
運行。因此,有1000個連接正在進行連續請求。節點js避免厄運和內存同時增加金字塔
對於服務器端嘗試了3個不同的解決方案,我測試了。我讓的服務器所使用的RAM方面的結果,之後的一切運行一個小時是:
- 簡單的回調 - http://jsfiddle.net/DcWmJ/ - 112MB
- Q模塊 - http://jsfiddle.net/hhsja/1/ - 850MB和增加
- 異步模塊 - http://jsfiddle.net/SgemT/ - 1.2GB並增加
服務器和客戶機位於不同的機器上。 (Softlayer雲實例)。節點0.10.12和Socket.io 0.9.16
這是怎麼發生的?我如何保持低內存並使用某種允許代碼可讀的庫?
你的第一個選擇不會幫助我。我只關心服務器的內存使用情況。客戶端僅用於測試服務器。關於第二個選項,如果該進程確實需要更多內存,然後設置爲--max-stack-size,該怎麼辦? –
如果進程需要更多內存,那麼讓它消耗它。當達到限制時,內存最終將被釋放。 – randunel
讓我知道如何弱引用的行爲,如果你到處去測試它們。 – randunel