конвейер ресурсов рельсов Невозможно выделить память - nodejs

мы только что обновились до Rails 3.2.5 с Rails 3.0.7 и использовали компиляцию ресурсов-конвейера на лету для промежуточного сервера, но иногда мы сталкиваемся с этим исключением!

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

Хотя, например, в coffeescripts или в папке с изображениями ничего необычного или огромного выделения памяти не делается!

Спасибо...


person Mustafah    schedule 13.06.2012    source источник
comment
Столкнулся с похожей проблемой, ты решил свою?? Спасибо!   -  person yorch    schedule 09.07.2012
comment
@yorch: Смотрите мой комментарий ниже. Это решило проблему за 30 секунд для меня.   -  person Kyle Carlson    schedule 22.11.2013
comment
@MustaphaELBanna: Мое решение сработало для вас? Если да, то не могли бы вы отметить это как ответ? Спасибо!   -  person Kyle Carlson    schedule 08.01.2014


Ответы (5)


Легко потратить три минуты (может быть, две, если вы печатаете быстро), чтобы добавить файл подкачки на ваш сервер.

Если вы используете Ubuntu (не уверен, насколько хорошо это работает для других вариантов Linux), просто следуйте этому руководству от DigitalOcean:

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

Вуаля!

person Kyle Carlson    schedule 07.08.2013
comment
Я столкнулся с аналогичной проблемой при развертывании с помощью AWS Elastic Beanstalk, обнаружил эту проблему, используя SSH для подключения к экземпляру и проверки журналов производства, после чего последовал руководству и был исправлен. Спасибо! - person torresomar; 13.01.2014
comment
@MustafaELBanna Не могли бы вы отметить это как принятый ответ? Многие другие люди думают, что это так. - person Kyle Carlson; 06.10.2014
comment
@KyleCarlson, вы все равно можете добавить ссылку на свой пост в блоге? - person joshua.paling; 04.03.2015

На основе ссылки на учебник, предоставленной Kyle Carlson


Проверьте пространство подкачки

sudo swapon -s

Пустой список подтвердит, что у вас не включены файлы подкачки:

Filename Type Size Used Priority

Создайте и включите файл подкачки (swapfile)

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

Создайте область подкачки Linux:

sudo mkswap /swapfile

выход:

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

Активируйте файл подкачки:

sudo swapon /swapfile

проверьте, видите ли вы сводку по свопу.

swapon -s

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

Готово!


Чтобы сделать файл подкачки постоянным

sudo nano /etc/fstab

Вставьте в следующую строку:

/swapfile none swap sw 0 0

Для параметра подкачки в файле должно быть установлено значение 10. Пропуск этого шага может привести к снижению производительности, тогда как установка значения 10 приведет к тому, что подкачка будет действовать как аварийный буфер, предотвращая сбои из-за нехватки памяти.

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

установите правильные разрешения для файла подкачки, чтобы он не был доступен для чтения публике:

sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile
person tokhi    schedule 03.08.2015

Основываясь на ответе @tohi, я создал скрипт, который вы можете вставить в терминал.

# 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

Обновление. Если вам потребуется изменить размер /swapfile позже, ознакомьтесь с этим ответом: https://askubuntu.com/a/763717/508371

person Besi    schedule 19.01.2016

Мы связались со службой поддержки провайдера, и они отвечают в 2-х сообщениях типа этого:

  1. Это может быть вызвано двумя причинами: либо вам действительно постоянно не хватает памяти, либо на вашем Webby не настроен своп.

У нас есть системный администратор, проверяющий его, и мы скоро ответим на ваш запрос.

  1. Ваш своп по какой-то причине был отключен, поэтому у вас возникли проблемы с памятью. Я исправил запись fstab и включил своп в правильном разделе. Теперь ты должен быть в порядке.

И до сих пор эта ошибка не отображается :) Надеюсь, она не будет отображаться и в будущем ...

Спасибо и удачи...

person Mustafah    schedule 09.07.2012

Возможно, это поможет:

RAILS_ENV=production rake assets:clean

Перезагрузите веб-сервер / например.

service apache2 restart

Затем:

RAILS_ENV=production rake assets:precompile
person dumP    schedule 08.03.2018