web-dev-qa-db-fra.com

pipeline des ressources "Impossible d'allouer de la mémoire - nodejs"

nous venons de mettre à niveau Rails 3.2.5 à partir de Rails 3.0.7 et d'utiliser la compilation d'actifs-pipeline à la volée pour le serveur de transfert, mais nous sommes parfois confrontés à cette exception!

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

Bien que rien ne soit fantaisiste ou qu’une grande quantité de mémoire ne soit allouée dans les coffeescripts ou dans le dossier images par exemple!

Merci...

28
Mustafah

Il est simple de passer trois minutes (peut-être deux si vous tapez vite) à ajouter un fichier d'échange sur votre serveur.

Si vous utilisez Ubuntu (vous ne savez pas si cela fonctionne pour d'autres versions de Linux), suivez simplement ce tutoriel de DigitalOcean:

https://www.digitalocean.com/community/articles/how-to-add-swap-on-ubuntu-12-04

Voila!

81
Kyle Carlson

Basé sur le lien de tutoriel fourni par Kyle Carlson


Vérifier l'espace d'échange

Sudo swapon -s

Une liste vide confirmera qu'aucun fichier d'échange n'est activé:

Filename Type Size Used Priority

Créer et activer le fichier d'échange (fichier d'échange)

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

Créez une zone d'échange Linux:

Sudo mkswap /swapfile

sortie:

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

Activer le fichier d'échange:

Sudo swapon /swapfile

vérifiez si vous pouvez voir le résumé de l'échange.

swapon -s

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

Terminé!


Rendre le fichier d'échange permanent

Sudo nano /etc/fstab

Collez dans la ligne suivante:

/swapfile none swap sw 0 0

Swappiness dans le fichier doit être défini sur 10. Ignorer cette étape peut entraîner des performances médiocres, alors que le définir sur 10 fera que swap agira comme une mémoire tampon d’urgence, évitant ainsi les pannes dues à un manque de mémoire.

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

configurez les autorisations correctes sur le fichier d'échange pour qu'elles ne soient pas lisibles par le public:

Sudo chown root:root /swapfile 
Sudo chmod 0600 /swapfile
11
tokhi

Sur la base de la réponse de @ tohi, j'ai créé un script que vous pouvez coller dans 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

Update : Si vous devez redimensionner le /swapfile ultérieurement, vérifiez cette réponse: https://askubuntu.com/a/763717/508371

8
Besi

Nous avons contacté le support du fournisseur, qui a répondu en 2 messages:

  1. Ceci peut être causé par deux choses: Soit vous êtes effectivement à court de mémoire ou votre Webby n’a pas de configuration swap configurée .

Nous avons un administrateur système qui le vérifie et nous répondrons à votre billet bientôt.

  1. Votre échange a été désactivé pour une raison quelconque , et c'est pourquoi vous aviez des problèmes de mémoire. J'ai corrigé l'entrée fstab , et j'ai activé l'échange sur la partition de droite. Vous devriez aller bien maintenant.

Et jusqu'à présent, cette erreur ne se voit pas :) J'espère qu'elle continuera à ne pas paraître aussi pour l'avenir ...

Merci et bonne chance ...

1
Mustafah

Peut-être que cela aide à:

Rails_ENV=production rake assets:clean

Redémarrez votre serveur Web/par exemple.

service Apache2 restart

Ensuite:

Rails_ENV=production rake assets:precompile
0
dumP