當我跑我的WebSocket的測試,我發現以下有趣的內存使用情況結果:二郎:內存使用情況的差異人物
服務器表示,沒有連接
[{total,573263528},
{processes,17375688},
{processes_used,17360240},
{system,555887840},
{atom,472297},
{atom_used,451576},
{binary,28944},
{code,3774097},
{ets,271016}]
44 processes,
System:705M,
Erlang Residence:519M
100K連接
[{total,762564512},
{processes,130105104},
{processes_used,130089656},
{system,632459408},
{atom,476337},
{atom_used,456484},
{binary,50160},
{code,3925064},
{ets,7589160}]
100044 processes,
System: 1814M,
Erlang Residence: 950M
200K連接
(重新啓動服務器並從0連接創建,而不是c從殼體2 ontinue)
[{total,952040232},
{processes,243161192},
{processes_used,243139984},
{system,708879040},
{atom,476337},
{atom_used,456484},
{binary,70856},
{code,3925064},
{ets,14904760}]
200044 processes,
System:3383M,
Erlang: 1837M
附圖與「系統:」和「二郎:」提供HTOP,其它的是從二郎殼的存儲器輸出()調用。請看一下總的和erlang居民的記憶。當沒有連接時,這兩個大致相同,具有100K連接,駐留內存比總數略大,具有200K連接,駐留內存幾乎是總數的兩倍。
有人可以解釋一下嗎?
內存沒有被虛擬機跟蹤,而是連接的系統句柄? –
我們需要更多信息。來自erlang VM和系統。在OS端運行pmap,並在erlang端運行進程摘要(例如頂端隊列持有者)。 – user425720