it-swarm.com.ru

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

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

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

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

Спасибо...

28
Mustafah

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

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

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

Вуаля!

81
Kyle Carlson

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


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

Sudo swapon -s

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

Filename Type Size Used Priority

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

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

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

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
11
tokhi

Основываясь на ответе @ 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

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

8
Besi

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

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

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

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

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

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

1
Mustafah

Может быть, это помогает:

Rails_ENV=production rake assets:clean

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

service Apache2 restart

Затем:

Rails_ENV=production rake assets:precompile
0
dumP