Skip to main content

Cannot allocate memory error while computing files - Setup Swap space


ActionView::Template::Error (Cannot allocate memory - nodejs /tmp/execjs20131021-26716-fckzo3.js 2>&1
Nodejs is used to compile javascript at runtime. In RoR applications, this error comes when server is started in production mode which compiles the assets or while running rake assets:precompile.
check for swap space and allocate
Read more...

$ sudo swapon -s
Filename Type Size Used Priority


It confirms swap space doesnot exists.

Check for the memory space.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            287M  8.0K  287M   1% /dev
tmpfs           118M  184K  118M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            295M     0  295M   0% /run/shm
none            100M     0  100M   0% /run/user
/dev/xvda1      7.9G  4.2G  3.4G  56% /

We can use the /dev/xvda1  and allocate 512mb for swap.

Create swap file using dd command.
$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k
524288+0 records in
524288+0 records out
536870912 bytes (537 MB) copied, 34.9025 s, 15.4 MB/s

File name can be changed by changing the name to any from swapfile.

sudo mkswap /swapfile
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=3e47fe14-e167-452d-a7b2-e72e8e1a6gd2

sudo swapon /swapfile

swapon -s
Filename Type Size Used Priority
/swapfile                               file 524284 0 -1

use the editor of your choice and edit the fstab entry to avoid losing swap space on reboot.
sudo vi /etc/fstab

paste the below line:
/swapfile       none    swap    sw      0       0 


sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile





Comments

Post a Comment

Popular posts from this blog

Starting with Ruby Metaprogamming

Metaprogramming is a programming technique in which computer programs have the ability to treat programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself while running.(wikipedia)
 Using simple code samples let's give basic start to metaprogramming which helps to relate how code base can be simplified.
 Considering the below class.

Now, using some metaprogramming concepts above code can be modified, notice the assign_attributes method used while the o/p in both the examples is same

Adding some more examples, below simple code helps to generate methods on the fly instead of defining in individually


Metaprogramming should be used with caution and not make the code complicated and difficult to read. It should be easy to understand and modular to change in future.

upload images to AWS::S3 in ruby using aws sdk gem

Using gem aws-sdk for a ROR application for uploading images to s3
Uploading images to a fixed bucket with different folders for each object or application. The s3 keeps a limitation on the number of buckets creation whereas there is no limitation for content inside a bucket. This code will upload image for a user to s3 using aws-sdk gem. The bucket and the image uploaded are made public, so that the images uploaded are directly accessible. The input is takes is the image complete path where it is present, folder in which it should be uploaded and user_id for whom it should be uploaded. def save_screenshot_to_s3(image_location, folder_name,user_id) service = AWS::S3.new(:access_key_id => ACCESS_KEY_ID, :secret_access_key => SECRET_ACCESS_KEY) bucket_name = "app-images" if(service.buckets.include?(bucket_name)) bucket = service.buckets[bucket_name] else bucket = service.buckets.create(bucket_name) …