Optimize 1C1G Cloud Server (A Practical, Proven Guide)
How to Optimize an Ubuntu 1C1G Cloud Server (A Practical, Proven Guide)
Introduction
Running a cloud server with 1 CPU and 1GB RAM is common for personal projects, landing pages, and small websites. However, default Ubuntu installations are not optimized for such low-resource environments, often leading to:
- High memory usage
- Random freezes
- OOM (Out of Memory) kills
- Poor performance under small traffic spikes
This article walks through real, production-tested optimizations to make Ubuntu stable, predictable, and usable on a 1C1G server.
1. The Core Principle: Reduce, Don’t Tune Blindly
On a 1C1G server, optimization is mostly about removing unnecessary components, not endless tuning.
Key rules:
- Fewer background services
- Fewer resident daemons
- Predictable memory usage
- Swap is mandatory
2. Enable Swap (Non-Negotiable)
Many cloud images ship without swap, which is dangerous on low memory machines.
1
2
3
4
5
sudo fallocate -l 512M /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Verify:
1
free -h
Why this matters:
- Prevents sudden OOM kills
- Absorbs short memory spikes
- Improves system stability dramatically
3. Adjust Kernel Memory Behavior
Reduce aggressive swapping and cache pressure:
1
2
3
4
5
6
7
8
sudo tee /etc/sysctl.d/99-1c1g.conf <<EOF
vm.swappiness=10
vm.vfs_cache_pressure=200
vm.dirty_ratio=10
vm.dirty_background_ratio=5
EOF
sudo sysctl -p /etc/sysctl.d/99-1c1g.conf
4. Install earlyoom (Fail Fast, Not Freeze)
Instead of letting the system hang:
1
2
3
sudo apt update
sudo apt install -y earlyoom
sudo systemctl enable --now earlyoom
This kills memory-hogging processes before the kernel panics.
5. Remove Ubuntu’s Server-Unfriendly Services
Ubuntu enables many services that are useless on cloud servers.
Disable them:
1
2
3
4
5
6
7
sudo systemctl disable --now \
snapd \
fwupd \
multipathd \
iscsid \
packagekit \
unattended-upgrades
Remove snap completely if unused:
1
2
sudo apt purge -y snapd
sudo rm -rf /snap /var/snap /var/lib/snapd /var/cache/snapd
Memory saved: 100–200MB
6. Limit systemd Journal Size
Unbounded logs silently eat disk and memory:
1
2
3
4
5
6
7
8
9
sudo mkdir -p /etc/systemd/journald.conf.d
sudo tee /etc/systemd/journald.conf.d/limit.conf <<EOF
[Journal]
SystemMaxUse=50M
RuntimeMaxUse=20M
EOF
sudo systemctl restart systemd-journald
7. Optimize MySQL for Low Memory
MySQL is often the largest memory consumer.
Edit:
1
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Add under [mysqld]:
1
2
3
4
5
innodb_buffer_pool_size = 128M
innodb_log_buffer_size = 8M
max_connections = 20
performance_schema = OFF
table_open_cache = 400
Restart:
1
sudo systemctl restart mysql
8. Tune PHP-FPM Conservatively
For PHP 8.x:
1
sudo nano /etc/php/8.3/fpm/pool.d/www.conf
Recommended settings:
1
2
3
4
5
pm = dynamic
pm.max_children = 2
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 1
9. What “Healthy” Looks Like
1
free -h
Expected:
- Available memory ≥ 450–550MB
- Swap usage < 100MB
- No frequent CPU spikes
- No OOM events
Conclusion
A 1C1G Ubuntu server can be perfectly stable if treated correctly.
The key is not powerful hardware—but intentional minimalism.