web-dev-qa-db-ja.com

railsアセットパイプライン "メモリを割り当てることができません-nodejs"

Rails 3.2.5 from 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やimagesフォルダでは、派手なメモリ割り当てや大量のメモリ割り当ては行われません。

ありがとう...

28
Mustafah

サーバーにスワップファイルを追加するのに3分(速く入力した場合は2分)を費やすのは簡単です。

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

スワップファイル(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
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

更新:後で/swapfileのサイズを変更する必要がある場合は、次の回答を確認してください: https:// askubuntu。 com/a/763717/508371

8
Besi

プロバイダーのサポートに連絡したところ、次の2つのメッセージで応答されました。

  1. これを引き起こす可能性のある2つのことがあります:実際に常にメモリが不足していますまたはWebbyにスワップが構成されていません

システム管理者がチェックしており、チケットにすぐに返信します。

  1. 何らかの理由でスワップが無効になりました、それがメモリの問題が発生した理由です。 fstabエントリを修正しました、右側のパーティションでスワップを有効にします。あなたは今元気になるはずです。

そして今までこのエラーは表示されません:)将来も表示されないことを願っています...

ありがとう、そして最高の幸運...

1
Mustafah

多分それは助けになります:

Rails_ENV=production rake assets:clean

ウェブサーバーを再起動します/例:.

service Apache2 restart

次に:

Rails_ENV=production rake assets:precompile
0
dumP