Cannot allocate memory sur un déploiement Symfony2

  • symfony2
Cannot allocate memory sur un déploiement Symfony2

Sur un projet utilisant Symfony2 et tournant sur une micro-instance Amazon, j’ai eu ce message d’erreur lors du ./composer.phar update :

Uncaught exception ‘ErrorException’ with message ‘proc_open(): fork failed – Cannot allocate memory’ in phar:

En effet les micros-instances d’Amazon ne disposent que de 613MB de mémoire et il faut croire que cela ne suffit pas au composer pour faire son update. On aurait pu passer au type d’instance supérieur mais franchement juste pour mettre à jour le projet ça ne vaut pas le coût de dépenser plus.

En fait on va tout simplement résoudre le problème comme ceci: puisqu’il lui faut plus de mémoire, on va lui en ajouter. Comment ? Tout simplement en créant un swap de 1GB pour compenser le manque de RAM. Si c’est juste pour les update, c’est pas grave que l’on passe sur le swap. Bien sur si l’application venait à consommer et utiliser la swap régulièrement, il faudrait réfléchir à upgrader l’instance EC2 que l’on utilise.
Donc voici les commandes pour créer notre swap:

/bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
/sbin/mkswap /var/swap.1
/sbin/swapon /var/swap.1

Et voilà ! Maintenant votre update devrait passer sans problème d’allocation mémoire.
Si vous souhaiter désactiver le swap il suffit simplement de faire

/sbin/swapoff /var/swap.1

Et vous pouvez aller plus loin en faisant que votre fichier de swap soit disponible même après un redémarrage.

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>