Running MySQL on a VPS with 512MB RAM

Uncategorized

Running MySQL on a VPS with 512MB RAM

Recently I tried installing WordPress on a VPS with 512 MB RAM running Ubuntu 18.04. With this low amount of RAM, MySQL kept crashing. I quickly noticed that the server did not have swapping enabled which would have helped in preventing the service from crashing.

If you face similar issues you should check if swapping is enabled on your server. Run the below command and if the output is blank it means that swapping is not enabled.

sudo swapon --show

For those who don’t know what swapping is, when the operating system runs out of RAM and if swapping is enabled, then the operating system can temporarily move some data from RAM onto the hard disk, thus freeing some space for other processes. Well, if this one line explanation is not good enough for you then Google is your friend.

To enable swapping you either need to create a swap partition or a swap file. Creating a swap file is easy which I did using the below commands.

sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile

The first command creates a file named swapfile of size 1 GB in the root directory. The second command ensures that this file can only be accessed by root as we don’t want normal users to access this. Forgetting to set these permissions is a security risk! The third command initialises the file to be used as a swap file.

Next we need to tell the operating system to use this swap file. You can do this by running the below command.

sudo swapon /swapfile

However, note that on restarting the server, swapping will be disabled again. To make this change permanent you need to add the below line to /etc/fstab.

/swapfile none swap sw 0 0

Too much swapping is not good as it reduces the performance. There is a swappiness setting which tells the operating system how often it should use the swap space. The value for this setting ranges from 0 to 100 where lower values mean avoid swapping often and higher values mean use swapping often.

You can check what the current value for swappiness is by running the below.

cat /proc/sys/vm/swappiness

In my case this was 60, which I reduced to 10 by editing /etc/sysctl.conf to add the below line.

vm.swappiness=10

After these changes I rebooted the server and ensured that swapping is enabled and swappiness value is 10.

sudo reboot
sudo swapon --show
cat /proc/sys/vm/swappiness

MySQL on my server hasn’t crashed yet after making these changes!

Salil Ponde

I have been programming since 1995 when I was 9. Started with QBASIC on MS-DOS on an 80286 machine with a monochrome monitor. Still remember those days! Currently enjoying coding in .NET Core and React. Recently launched https://sharpsociety.in

One thought on Running MySQL on a VPS with 512MB RAM

  1. Hi, this is an excellent write-up, and I have just now tried this on my VPS server I was getting the same issues,

    i also added the cache pressure
    vm.vfs_cache_pressure=50

    one feedback i want to give whle typing this comment i could rarely see the text what i am typing as your background and the text color are of slight difference i don’t know if you have noticed that !

    thanks & regards

Leave a Reply

Your email address will not be published. Required fields are marked *