Текучая память в node.js. Часть 2.

Это просто срань господня. Перетянул управление сессиями NNTP в отдельный модуль, и память волшебным образом перестала течь. По крайней мере, так сильно, как раньше. До этого с утреца к вечеру набегало 60-100 мегов в RES (фактически, js heap). Теперь с утра тьфу-тьфу, 20 мегабайт.

Сессия - объект с данными аутентификации, списком доступных гупп и т.п. Раньше я сессию пихал прямо в stream (нынешний socket, см документацию по ноде). Теперь сделал отдельную кучу, а в стриме храню только идентификатор. Почему раньше garbage collector сосал - ума не приложу. Весь код изучил вдоль и поперек - ну не должно там было возникнуть циклических ссылок.

Будем полировать дальше. Да, еще иногда демон тупо подвисает - я в курсе, и логи ошибок постоянно смотрю. Если падения не прекратятся вместе с утечками памяти, заведу monit, который будет процессы перезапускать при недоступности. Но не хотелось бы. Я искренне считаю, что нормальная программа должна обходиться без костылей.

Короче, JS не совсем тривиальная штука, хоть и удобная до жути. На веб-страничках некоторые ляпы совсем не заметны. А вот когда приложение должно работать месяцами и хреначить тонны байтов - вылезают всякие непонятности. Но я пока полон оптимизма. От идеи делать новые сервисы на ноде отказываться не планирую.

  • 1579