30

我们刚刚从 Rails 3.0.7 升级到 Rails 3.2.5,并为临时服务器使用了资产管道编译,但有时我们会遇到这个异常!

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

尽管例如在咖啡脚本或图像文件夹中没有做任何花哨或巨大的内存分配!

谢谢...

4

5 回答 5

83

花三分钟(如果键入速度很快,可能需要两分钟)将交换文件添加到服务器很简单。

如果您正在运行 Ubuntu(不确定这对其他 Linux 版本的效果如何),请按照 DigitalOcean 的本教程进行操作:

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

瞧!

于 2013-08-07T16:54:17.810 回答
13

基于提供的教程链接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

文件中的 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
于 2015-08-03T13:25:56.280 回答
11

根据@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

于 2016-01-19T19:07:18.597 回答
1

我们联系了提供商的支持,他们在 2 条消息中得到了回复,如下所示:

  1. 有两件事可能导致这种情况:要么您确实经常耗尽内存,要么您的 Webby 没有配置交换

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

  1. 您的交换因某种原因被禁用,这就是您遇到内存问题的原因。我修复了 fstab 条目,并在正确的分区上启用了交换。你现在应该没事了。

直到现在这个错误还没有显示:) 希望它在未来也不会出现......

感谢和好运 ...

于 2012-07-09T12:14:57.737 回答
0

也许它有助于:

RAILS_ENV=production rake assets:clean

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

service apache2 restart

然后:

RAILS_ENV=production rake assets:precompile
于 2018-03-08T12:39:14.347 回答