28

我们刚刚从Rails 3.0.7升级到Rails 3.2.5,并对登台服务器使用assets-pipeline编译,但有时候我们会面临这个异常!rails assets pipeline“无法分配内存 - nodejs”

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 

虽然没有什么花哨的或巨大的内存分配在咖啡或脚本文件夹中完成例如!

谢谢...

+0

我面临着类似的问题,你去解决你的?谢谢! – yorch

+0

@yorch:看到我下面的评论。它为我解决了30秒内的问题。 –

+0

@MustaphaELBanna:我的解决方案适合你吗?如果是这样,请您将其标记为答案?谢谢! –

回答

1

我们联系了供应商的支持,他们在2个消息回应是这样的:

  1. 有两件事情可以导致此:要么您确实运行内存不足您的Webby没有配置交换

我们有一个系统管理员检查它,我们会尽快回复您的票。

  1. 您的交换是禁用出于某种原因,这就是为什么你有内存问题。 我修复了fstab条目,并在右侧分区上启用了交换。 你应该现在就好了。

直到现在这个错误不会显示:)希望它会继续没有表现出对未来的太...

谢谢,好运...

+0

标记正确的答案... –

11

根据所提供的教程链接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 

完成!


为了使交换文件permenant

sudo nano /etc/fstab

粘贴在下面一行:

/swapfile none swap sw 0 0

Swappiness在文件中应设置为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 
6

基于@ 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

0

也许它可以帮助:

RAILS_ENV=production rake assets:clean 

重新启动您的Web服务器/例如

service apache2 restart 

然后:

RAILS_ENV=production rake assets:precompile