I run all my websites on a tiny Amazon EC2 t2.nano instance, which has 512MB of RAM. This runs Nginx, MySQL, PHP, Monit, and other bits and pieces. The instance is easily powerful enough for most tasks, especially given I use a the CloudFlare Content Distribution Network (CDN).
The instance occasionally runs out of memory when I do a “yum update”, so I decided to add some swap space. Hit “read more” to see how I did this.
My t2.nano has 3.4GB free, and because I sometimes need available disk space for various tasks I decided I only wanted to use 512MB of disk as swap. That should give the system enough space for running yum updates without having to shut PHP down, which I’ve been doing for the past couple of months.
Note that I’m putting my swap onto EBS disk, which is a network disk. This instance gets 76MB/sec of throughput to EBS, which is much lower than a local disk would get, but hey it’s what the instance has. The operating system (Amazon Linux) knows that swap is slow, so it won’t put anything it needs fast access to in there.
AWS also recently announced you can resize your EBS volumes, a really handy feature.
Here’s my free memory before I started this process
total used free shared buffers cached Mem: 491 460 30 164 30 228 -/+ buffers/cache: 202 289 Swap: 0 0 0
Here’s the free memory after
total used free shared buffers cached Mem: 491 485 5 122 21 323 -/+ buffers/cache: 140 350 Swap: 511 0 511
Here are the steps I took to enable swap space
dd if=/dev/zero of=/swapfile bs=1M count=512 mkswap /swapfile chmod 600 /swapfile swapon /swapfile
You also have to edit your fstab file so the swap is available after reboot
Add the following to the bottom of the file – I made sure it lined up with the existing entries, but that’s probably not necessary.
/swapfile swap swap defaults 0 0
That’s it! Start to finish it took me 15 minutes. It’s surprisingly easy to add swap to your Amazon Linux instance.