Подтвердить что ты не робот

Рейк-активы: precompile убивается, когда в производстве открывается консольный сеанс

На моем производственном сервере, который размещен на цифровом океане, если это помогает, Ubuntu 12.04, у меня есть RoR 4 и rake 10.1.1.

Когда я развертываю, я запускаю rake assets:precompile, и я заметил странную проблему, когда, если я открываю сеанс rails console, когда я это делаю, я получаю следующий вывод

~# rake assets:precompile
~# Killed

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

Спасибо,

Брайан

4b9b3361

Ответ 1

Ваш прекомпиляционный процесс, вероятно, будет убит, потому что у вас заканчивается RAM. Вы можете подтвердить это, запустив top в другой сеанс ssh. Чтобы исправить это, создайте файл подкачки, который будет использоваться, когда ОЗУ будет заполнено.

Создать пространство SWAP на Ubuntu Вероятно, вам понадобится некоторое место подкачки, если вы планируете использовать Rails на камере ОЗУ 512 МБ. В частности, вы закончите работу с ОЗУ при компиляции активов, что приведет к тихому уничтожению процесса и предотвращению успешного развертывания.

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

sudo swapon -s

Нет файла подкачки? Проверьте, сколько места на диске у вас есть:

 df

Чтобы создать файл подкачки:

Шаг 1: Выделите файл для свопа

sudo fallocate -l 2048m /mnt/swap_file.swap

Шаг 2: Изменить разрешение

sudo chmod 600 /mnt/swap_file.swap

Шаг 3: Отформатируйте файл для подкачки устройства

sudo mkswap /mnt/swap_file.swap

Шаг 4: Включите обмен

sudo swapon /mnt/swap_file.swap

Шаг 5: Убедитесь, что swap установлен при перезагрузке. Сначала откройте fstab

sudo nano /etc/fstab

Наконец, добавьте запись в fstab (только если она не была добавлена ​​автоматически)

# /etc/fstab
/mnt/swap_file.swap none swap sw 0 0 

Сохранить и выйти. Вы закончили добавлять своп. Теперь ваш rake assets:precompile должен завершиться без его убийства.

Ответ 2

Rake assets:precompile - процесс хранения памяти.

Поэтому перед использованием этой команды убедитесь, что у вас достаточно ОЗУ.

Ответ 3

У меня есть стек opsworks на aws, и я бы изменил свой тип экземпляра. Я использовал t1.micro, и я просто изменил его на t1.small

Большое спасибо.

Ответ 4

Это использует много оперативной памяти. Чтобы проверить, сколько свободного объема свободной памяти вы используете, используйте команду

free -m

Это покажет доступную оперативную память в MB

Временным решением было бы создать пространство подкачки.

Я собирался добавить это как комментарий к сообщению Jason R выше, прежде чем вы войдете в его шаги, просто чтобы убедиться, что это проблема с ресурсами ОЗУ.

вы также можете запустить

echo {1,2,3} > /proc/sys/vm/drop_caches

чтобы очистить кэш-память, но она, вероятно, не будет достаточно свободной.