@artem_music

Errno::ENOMEM — rails не хватает памяти на обработку CSS?

Верстаю сайт под RoR, периодически возникает следующая ошибка:

Errno::ENOMEM in Pages#index
Cannot allocate memory - node
(in /var/www/html/my_app/app/assets/stylesheets/pages.css.scss)

и выделена красным эта строчка в application.html.erb:
<%= stylesheet_link_tag "pages" %>


Память на сервере еще есть (около 140 мб + свободный SWAP), в чем может быть дело? Как это лечить?

UPD: Проблема ушла после того, как руками подключил CSS в /views/layouts/application.html.erb, предварительно на локальной машине скомпилировав из SCSS. Но чувствую, что это костыльное решение. В общем не хватает памяти на компиляцию SCSS файла системе почему-то, возможно причина в том, что файл большой? (2900 строк)
  • Вопрос задан
  • 282 просмотра
Решения вопроса 1
@artem_music Автор вопроса
Проблема решилась путем прекомпиляции css и js (rake:precompile). Не хватало оперативной памяти на формирование агрегированных стилей и скриптов на лету.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
В целом, согласно предоставленному Gemfile, похоже на чрезмерное количество используемых гемов.
Все они, неудивительно, потребляют память в той или иной мере, что в итоге козлом отпущения становится предобработка SCSS.

  1. Наиболее логичным мне кажется уменьшение количества зависимостей.
  2. Вдобавок потребление памяти может увеличиться именно при определённых настройках гемов.
  3. Оптимизация потребления памяти приложения профайлером.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы