Recently, we encountered a challenging issue on one of the servers I help administer. The server would occasionally max out its RAM usage, forcing it to rely on swap space. When both RAM and swap space were exhausted, the server would grind to a halt, requiring a manual restart.

The Problem: Growing Needs, Limited Resources

The server in question had been in operation for several years, starting with modest traffic but gradually growing as the websites it hosted gained popularity and their databases expanded. Despite this growth, it was still running with only 512MB of RAM—a limitation we’ve since addressed with an upgrade.

However, we needed an immediate solution before the hardware upgrade could be implemented. The server already had a swap partition, but creating another one wasn’t feasible without significant downtime, as all available hard drives were in active use.

The Solution: Adding a Swap File

The answer turned out to be creating a swap file rather than a swap partition. This approach allows you to add additional swap space without reconfiguring your disk partitions—perfect for an emergency fix. Here’s how to do it:

  1. Navigate to a directory with plenty of available space:

    cd /home
  2. Create a swap file using /dev/zero:
    bash
    dd if=/dev/zero of=swapfile bs=1024 count=4194304
    This creates an empty file called “swapfile” with a block size of 1024 bytes and 4,194,304 blocks, resulting in a 4GB file. (To calculate the size in GB: 4,194,304 ÷ 1024 ÷ 1024 = 4GB)
  3. Set appropriate permissions on the file:

    chmod 600 swapfile
  4. Format the file as swap space:

    mkswap swapfile
  5. Activate the swap file:

    swapon swapfile

To verify that your new swap space is active, you can run:

cat /proc/swaps

This command displays all active swap spaces on your system, and you should now see your newly created swap file listed alongside any existing swap partitions.

Important Considerations

This solution doesn’t automatically activate on system boot, which was fine for our purposes since we planned to upgrade the RAM soon. If you need a more permanent solution, you would need to add an entry to your /etc/fstab file.

Remember that while this approach can prevent system crashes, it’s only a temporary workaround. Swap space, especially on a traditional hard drive, is significantly slower than RAM. For optimal performance, it’s always better to address the root cause by:

  1. Upgrading physical RAM
  2. Optimizing your application configurations
  3. Considering server upgrades if necessary

That said, when you need a quick fix to keep a server stable until more permanent solutions can be implemented, adding a swap file is a valuable technique to have in your system administration toolkit.