2012-05-25 4 views
6

Я работаю во встроенной среде, где ресурсы довольно ограничены. Мы пытаемся использовать node.js, который работает хорошо, но обычно потребляет около 60 мегабайт виртуальной памяти (используется реальная память около 5 мегабайт). Учитывая наши ограничения, это слишком большая виртуальная память; мы можем позволить себе позволить node.js использовать максимум 30 мегабайт виртуальной машины.Как ограничить использование виртуальной памяти узлом.js?

Есть несколько параметров командной строки для Node.js, таких как «--max_old_space_size», «--max_executable_size», и «--max_new_space_size», но после экспериментов я обнаружил, что все они контролируют реальную память а не максимальный объем виртуальной памяти.

Если это важно, я работаю в варианте Linux ubuntu в архитектуре ARM.

Есть ли какой-либо параметр или параметр, который позволит установить максимальный объем виртуальной памяти, который разрешен для использования процессом node.js?

+0

Почему это должно быть проблемой? Linux использует избыточное распределение: эта виртуальная память будет существовать только в виде записей внутри таблицы страниц процесса, пока она не будет * использована *. –

+0

Hm. Я не уверен. Это встроенная среда (это означает: отсутствие дискового пространства), не будут ли все виртуальные распределения использовать какую-то реальную память? Я положу эту мысль моему боссу, но у меня такое чувство, что это не будет иметь никакого значения; Мне было приказано уменьшить площадь и утверждать, что мне не нужно будет нести большой вес. «Клиент всегда прав». Кроме того, я столкнулся с другой проблемой; Я написал функцию, использующую setrlimit(), чтобы ограничить использование виртуальной памяти менее чем на 55 мегабайт, а теперь node.js выходит с ошибкой malloc. Какие-либо предложения? – Mike

+0

Привет Майк. Как вы это решили? – Industrial

ответ

1

Вы можете использовать softlimit для выполнения узла с ограниченным размером. Или вы можете напрямую использовать setrlimit Linux, но на самом деле не уверены, как его назвать от NodeJS, см. this SO question

+0

Спасибо. Я нашел setrlimit(), использовал его для написания плагина для node.js, и он работает, но теперь я получаю сообщение об ошибке от node.js, что malloc() терпит неудачу, потому что он не может выделить столько памяти (55 мегабайт), как он хочет. Казалось бы, очень безжалостный способ справиться с нехваткой памяти. Итак, теперь я пытаюсь выяснить, могу ли я перестроить node.js и оставить что-то, чтобы уменьшить объем памяти. Есть идеи? – Mike

Смежные вопросы