2012-05-25 46 views
6

Estoy trabajando en un entorno incrustado, donde los recursos son bastante limitados. Estamos tratando de usar node.js, que funciona bien, pero normalmente consume alrededor de 60 megabytes de memoria virtual (la memoria real utilizada es de unos 5 megabytes). Dadas nuestras limitaciones, esta es demasiada memoria virtual; solo podemos permitirnos que node.js use unos 30 megabytes de VM, como máximo.¿Cómo limitar el uso de memoria virtual por node.js?

Hay varias opciones de línea de comandos para Node.js, tales como "--max_old_space_size", "--max_executable_size", y "--max_new_space_size", pero después de la experimentación, me parece que todos estos controlan la memoria real uso, no el tamaño máximo de la memoria virtual.

Si es importante, estoy trabajando en una variante de Ubuntu Linux en una arquitectura ARM.

¿Hay alguna opción o configuración que permita establecer la cantidad máxima de memoria virtual que un proceso node.js puede usar?

+0

¿Por qué debería ser un problema? Linux utiliza la asignación excesiva: esta memoria virtual solo existirá como entradas dentro de la tabla de la página de proceso hasta que se use * acutually *. –

+0

Hm. No estoy seguro. Este es un entorno incrustado (es decir, sin espacio en el disco) por lo que no todas las asignaciones virtuales usarían algo de memoria real. Voy a suponer que el pensamiento a mi jefe, pero tengo la sensación de que no hará ninguna diferencia; Me han ordenado reducir la huella y argumentar que no debería hacerlo no va a tener mucho peso. El 'cliente siempre tiene razón'. Además, me encontré con otro problema; Escribí una función usando setrlimit() para limitar el uso de memoria virtual a menos de 55 megas, y ahora node.js sale con un error malloc. ¿Alguna sugerencia? – Mike

+0

Hola Mike. Como solucionaste esto? – Industrial

Respuesta

1

Puede usar softlimit para ejecutar el nodo de tamaño limitado. O puede usar directamente setrlimit de Linux, pero no está seguro de cómo llamarlo desde NodeJS, consulte this SO question

+0

Gracias. Encontré setrlimit(), lo usé para escribir un complemento para node.js, y funciona, pero ahora recibo un mensaje de error de node.js que dice que malloc() está fallando porque no puede asignar tanta memoria (55 megas) como quiera. Una forma muy desgarbada de manejar la falta de memoria, parece ser. Así que ahora estoy tratando de averiguar si puedo reconstruir node.js y omitir algo para reducir la huella de memoria. ¿Algunas ideas? – Mike

Cuestiones relacionadas