Когда я запустил свой тест 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, не продолжать со случая 2)
[{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
Цифры с "System:" и "Erlang:" предоставляются htop, другие выводят вызов memory () из оболочки erlang. Пожалуйста, посмотрите на общую и эрланговую память места жительства. Когда нет соединения, эти два примерно одинаковы, с соединениями 100 КБ, резидентная память немного больше, чем общая, с 200 К соединениями, резидентная память почти вдвое больше общего.
Кто-нибудь может объяснить?