NodeJS + socket.io + mongoDB. Где утечка памяти?

Есть простой эхо сокет сервер реализованный на nodejs и socket.io.
Каждое сообщение принятое сокет сервером пишется в mongoDB.
При тестировании сокет сервера утилитой websocket-bench, создается 3000 одновременных соединений, которые шлют по одному сообщению каждую секунду, начинает линейно расти память до бесконечности.
При 2000 соединений и 2000 сообщений в секунду проблемы нет.
Запуск сокет сервера с --nouse-idle-notification и --expose-gc + вызов GC вручную, результатов не дает.
Сокет сервер запущен в один поток.
Это утечка памяти или сокет сервер таким образом не справляется с нагрузкой? Если утечка, то подскажите пожалуйста где.
Ссылка на гитхаб с кодом сокет сервера https://github.com/MaxBoltik/echo-socket-server/bl...
  • Вопрос задан
  • 783 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
вызов GC вручную


И как это могло бы помочь интересно.

сокет сервер таким образом не справляется с нагрузкой?


если там есть внутри буфер сообщений на отправку - то вполне может просто не успевать отправлять сообщеньки.
Ответ написан
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
Утечка в массиве CLIENTS, он не очищается никогда
причина socket.on('disconnect') у socket.io сделано через одно место, как и сам socket.io
если быть совсем точным, этого события не произойдет, пока Вы не попытаетесь что-то записать в сокет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы