28

Acabamos de actualizar a Rails 3.2.5 desde Rails 3.0.7 y usando la compilación de compilación de activos sobre la marcha para el servidor intermedio, pero algunas veces enfrentamos esta excepción !rails asset Pipeline "No se puede asignar memoria - nodejs"

Showing /var/rails/appname/app/views/common/_my_partial.html.haml where line # raised: 

Cannot allocate memory - nodejs /tmp/execjs20120613-17090-thoc8f.js 2>&1 

Extracted source (around line #): 

Trace of template inclusion: app/views/layouts/application.html.haml 

Aunque las asignaciones de memoria de lujo o nada enorme se hace en los coffeescripts o en las imágenes de la carpeta, por ejemplo!

Gracias ...

+0

estoy frente a un problema similar, llegaste para resolver el suyo ?? ¡Gracias! – yorch

+0

@yorch: mira mi comentario a continuación. Solucionó el problema en 30 segundos para mí. –

+0

@MustaphaELBanna: ¿Mi solución funcionó para ti? Si es así, ¿podría marcarlo como la respuesta? ¡Gracias! –

Respuesta

1

Se estableció contacto con el apoyo del proveedor, y se respondió en 2 mensajes como éste:

  1. hay dos cosas que pueden ser la causa de esto: De cualquier le están ejecutando memoria constantemente o su Webby no tiene swap configurado.

Tenemos un sysadmin que lo verifica y le responderemos su ticket pronto.

  1. su canje fue desactivar por alguna razón, y es por eso que estaban teniendo problemas de memoria. He arreglado la entrada fstab, y habilito el intercambio en la partición derecha. Deberías estar bien ahora.

Y hasta ahora este error no muestra :) Espero que se mantendrá sin mostrar también en el futuro ...

Gracias, y mucha suerte ...

+0

marque la respuesta correcta ... –

11

Basado en el enlace tutorial proporcionado por Kyle Carlson


espacio Comprobar intercambio

sudo swapon -s

Una lista vacía confirmará que no tiene archivos de intercambio habilitados:

Filename Type Size Used Priority

crear y habilitar el archivo de intercambio (intercambio)

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

crear un área de intercambio de Linux:

sudo mkswap /swapfile

de salida:

Setting up swapspace version 1, size = 262140 KiB no label, UUID=103c4545-5fc5-47f3-a8b3-dfbdb64fd7eb 

Active el archivo de intercambio:

sudo swapon /swapfile

Compruebe si puede ver el resumen del intercambio.

swapon -s 

Filename    Type  Size Used Priority 
/swapfile        file  262140 0 -1 

¡Hecho!


Para hacer que el archivo de intercambio permenant

sudo nano /etc/fstab

Pega en la siguiente línea:

/swapfile none swap sw 0 0

swappiness en el archivo debe ajustarse a 10. Saltarse este paso puede causar un rendimiento pobre, mientras que configurarlo para 10 hará que el intercambio actúe como un búfer de emergencia, lo que evita bloqueos por falta de memoria.

echo 10 | sudo tee /proc/sys/vm/swappiness 
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf 

establecieron los permisos correctos en el archivo de intercambio no es legible por el público:

sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile 
6

Sobre la base de la respuesta de @ tohi, he creado un script que puede pegar en un terminal.

# Turn it (off) on 
# sudo swapoff -a 
sudo swapon -s 

# Create a swap file 
# 512k --> Swapfile of 512 MB 
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k 

# Use the swap file 
sudo mkswap /swapfile 
sudo swapon /swapfile 

# make sure the swap is present after reboot: 
sudo echo " /swapfile  none swap sw  0  0 " >> /etc/fstab 

# Set the swappiness (performance - aware) 
echo 10 | sudo tee /proc/sys/vm/swappiness 
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf   

# Change the permission to non-world-readable 
sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile 

actualización: Si necesita cambiar el tamaño de la /swapfile en un momento posterior echa un vistazo a esta respuesta: https://askubuntu.com/a/763717/508371

0

Tal vez ayuda a:

RAILS_ENV=production rake assets:clean 

Reinicie su servidor web/p

service apache2 restart 

continuación:

RAILS_ENV=production rake assets:precompile 
Cuestiones relacionadas