Giảm tiêu thụ RAM cho VPS Ubuntu hiệu quả

SSH vào VPS Ubuntu RAM thấp (1GB, 2GB), việc đầu tiên bạn thấy sau free -h là gần như toàn bộ RAM đã bị dùng, chỉ còn vài chục MB trống. Đừng vội hoảng, một phần là cache, nhưng cũng có nhiều tiến trình nền ngốn RAM không cần thiết. Bài viết này hướng dẫn giảm tiêu thụ RAM cho VPS Ubuntu, từ kiểm tra đến tinh chỉnh systemd, journald và thiết lập ZRAM, áp dụng cho Ubuntu 24.04 LTS và cả bản 26.04 LTS mới ra mắt tháng 4/2026.
Yêu cầu trước khi bắt đầu
- VPS chạy Ubuntu 24.04 LTS hoặc Ubuntu 26.04 LTS, quyền
roothoặc usersudo. - Kiến thức căn bản về dòng lệnh và SSH.
- Bài viết giả định bạn dùng VPS Linux với full root, không phải shared hosting.
Vì sao Ubuntu server ngốn RAM và khi nào cần tối ưu?
Ubuntu Server mặc định kích hoạt nhiều service nền như systemd-journald, unattended-upgrades, snapd và các daemon khác. Cộng thêm cơ chế cache page cache của kernel, khiến free -h hiển thị dung lượng đã dùng rất cao. Thực tế RAM trống không có nghĩa là lãng phí, Linux dùng RAM trống để cache đĩa, giúp tăng tốc độ đọc ghi.
Bạn chỉ thực sự cần giảm tiêu thụ RAM khi gặp tình trạng OOM (Out Of Memory) hoặc swap bị dùng quá nhiều khiến VPS chậm, đặc biệt với gói VPS 1GB hoặc 2GB chạy web, Docker hay n8n. Khi đó việc tinh chỉnh có thể giúp bạn xử lý tình trạng đầy RAM mà không cần nâng cấp gói ngay.
Bước 1: Kiểm tra tiến trình ngốn RAM thực tế
Trước khi tối ưu, cần biết tiến trình nào thực sự chiếm RAM để quyết định tắt hay giữ nguyên. Lệnh top hiển thị theo thời gian thực, nhưng để có danh sách tĩnh dễ đọc, dùng:
ps aux --sort=-%mem | head -15
Lệnh này liệt kê 15 tiến trình dùng nhiều RAM nhất, sắp xếp giảm dần. Cột %MEM cho biết phần trăm RAM mỗi tiến trình chiếm. Kiểm tra cả swap đã dùng:
free -h
swapon --show
Verify: nếu output chỉ có các tiến trình của ứng dụng bạn đang chạy (MySQL, PHP-FPM, nginx) và không có service lạ, nghĩa là mức dùng RAM là bình thường. Ngược lại, nếu thấy snapd, NetworkManager (trên server không cần) hay nhiều tiến trình systemd-resolved không dùng tới, bạn có thể tắt chúng.
Bước 2: Tắt service không cần thiết bằng systemd
Ubuntu cài sẵn một số service chỉ hữu dụng trên máy desktop, không cần trên VPS. Dùng systemctl để kiểm tra trạng thái và tắt:
systemctl list-units --type=service --state=running --no-pager
Nếu chạy VPS thuần server không cần giao diện, các service sau có thể tắt an toàn: cups, bluetooth, ModemManager, avahi-daemon. Trên Ubuntu 24.04, một số service không tồn tại mặc định nhưng nếu bạn cài thêm thì nên kiểm tra. Lệnh tắt và vô hiệu hóa không cho khởi động cùng hệ thống:
sudo systemctl disable --now snapd
Lưu ý: snapd nếu bạn không dùng ứng dụng cài qua snap (Firefox, certbot bản snap) thì có thể tắt để tiết kiệm khoảng 100-150MB RAM. Kiểm tra danh sách snap đang chạy trước khi tắt:
snap list
Nếu không có gói snap quan trọng, tắt và xóa snapd giúp giảm đáng kể RAM nền:
sudo apt purge --auto-remove snapd
Verify kiểm tra lại mức RAM: free -h, tiến trình snapd không còn trong ps aux.
Bước 3: Giới hạn nhật ký journald để giảm ghi đĩa và RAM
systemd-journald thu thập log toàn hệ thống, mỗi service ghi log đều chiếm một phần RAM cho buffer. Mặc định journald không giới hạn dung lượng log, lâu ngày có thể đầy đĩa và tốn RAM cho việc xử lý. Tinh chỉnh file cấu hình:
sudo nano /etc/systemd/journald.conf
Tìm và sửa hoặc thêm các dòng sau:
SystemMaxUse=100M
SystemMaxFileSize=20M
MaxRetentionSec=7day
Compress=yes
Giải thích: SystemMaxUse=100M giới hạn tổng log tối đa 100MB; MaxRetentionSec=7day tự xóa log quá 7 ngày. Sau đó khởi động lại journald:
sudo systemctl restart systemd-journald
Verify kiểm tra dung lượng log trước và sau khi dọn: journalctl --disk-usage. Lệnh này nên cho kết quả dưới 100MB.
Bước 4: Cấu hình ZRAM để tận dụng RAM thay swap chậm (File ZRAM trên Ubuntu 24.04)
ZRAM tạo một vùng nén trong RAM, dùng làm swap ảo. Khi RAM sắp đầy, kernel nén các trang bộ nhớ ít dùng vào ZRAM, giảm áp lực lên RAM vật lý và tránh phải ghi swap trên ổ cứng (chậm hơn hàng chục lần). Đặc biệt hiệu quả với VPS NVMe vì tiết kiệm vòng ghi SSD, nhưng ZRAM hoạt động tốt trên mọi loại ổ.
Ubuntu 24.04 sử dụng file cấu hình systemd /etc/systemd/zram-generator.conf (gói systemd-zram-generator). Cài đặt:
sudo apt update
sudo apt install systemd-zram-generator
Tạo file cấu hình:
sudo nano /etc/systemd/zram-generator.conf
Nội dung cơ bản cho VPS 1GB:
[zram0]
zram-size = ram / 2
compression-algorithm = zstd
Giải thích: zram-size = ram / 2 nghĩa là tạo ZRAM bằng một nửa RAM vật lý (VPS 1GB sẽ có 512MB ZRAM), zstd là thuật toán nén cân bằng tốc độ và tỉ lệ. Khởi động lại để kích hoạt:
sudo systemctl daemon-reload
sudo systemctl start [email protected]
Xác minh ZRAM hoạt động:
swapon --show
Output sẽ hiển thị /dev/zram0 với dung lượng tương ứng. Dùng lệnh zramctl để xem tỉ lệ nén thực tế: nếu cột DATA nhỏ hơn TOTAL nghĩa là dữ liệu đang được nén hiệu quả.
Bước 5: Tinh chỉnh tham số kernel về áp lực swap
Tham số vm.swappiness quyết định mức độ kernel dùng swap. Giá trị mặc định 60 khá cao, khiến hệ thống swap sớm dù RAM còn trống. Trên VPS đã có ZRAM, bạn vẫn nên giảm swappiness xuống 10 để ưu tiên dùng RAM vật lý trước:
sudo sysctl vm.swappiness=10
Để áp dụng lâu dài, tạo file cấu hình:
echo "vm.swappiness=10" | sudo tee /etc/sysctl.d/99-swappiness.conf
Kiểm tra lại với sysctl vm.swappiness. Một tham số khác hữu ích là vm.vfs_cache_pressure, mặc định 100. Giảm xuống 50 để kernel giữ cache inode/dentry lâu hơn, cải thiện hiệu năng đọc file, đặc biệt khi chạy web server:
echo "vm.vfs_cache_pressure=50" | sudo tee /etc/sysctl.d/99-vfs-cache.conf
Đây là phần tinh chỉnh giúp giảm tiêu thụ RAM cho VPS Ubuntu trong thời gian dài, ít khi gây lỗi nhưng bạn nên khởi động lại hoặc chạy sudo sysctl --system để áp dụng.
Bước 6: Tắt phiên bản IPv6 nếu không dùng và giảm cache DNS
Không trực tiếp giảm RAM nhiều nhưng giúp giảm số tiến trình nền. Nếu VPS không dùng IPv6, tắt trong sysctl:
echo "net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1" | sudo tee /etc/sysctl.d/99-disable-ipv6.conf
Với systemd-resolved, nếu bạn dùng cấu hình DNS tĩnh trong /etc/resolv.conf và không cần phân giải tên động, có thể tắt service này. Nhưng cẩn thận, nhiều ứng dụng dựa vào systemd-resolved, nếu tắt mà chưa cấu hình thay thế sẽ mất DNS. Chỉ thực hiện nếu bạn chắc chắn đã đặt DNS tĩnh:
sudo systemctl disable --now systemd-resolved
Kiểm tra ngay: ping -c 3 google.com. Khi đã tắt, bạn nên cài một resolver nhẹ hoặc dùng VPS Linux với cấu hình DNS tĩnh từ nhà cung cấp.
Xử lý lỗi thường gặp khi tối ưu RAM
Lỗi 1: Tắt snapd nhưng certbot hoặc ứng dụng khác ngừng hoạt động. Nếu bạn cài certbot qua snap, cần cài lại qua apt trước khi xóa snapd: sudo apt install certbot python3-certbot-nginx. Kiểm tra phiên bản: certbot --version.
Lỗi 2: ZRAM không kích hoạt sau khi cài gói. Chạy lệnh kiểm tra lỗi:
sudo systemctl status [email protected]
sudo dmesg | grep zram
Nếu thấy lỗi cú pháp trong file zram-generator.conf, kiểm tra lại dấu cách và tên thuộc tính phải là zram-size, không phải zram_size.
Lỗi 3: Sau khi tắt service, VPS không thể truy cập mạng. Khôi phục bằng cách bật lại service: sudo systemctl enable --now systemd-resolved rồi khởi động lại mạng: sudo systemctl restart systemd-networkd.
Câu hỏi thường gặp
Vì sao free -h trên Ubuntu luôn báo RAM đã dùng gần hết?
Linux dùng RAM trống cho cache đĩa (buff/cache), giúp tăng tốc đọc file. Đây là hành vi bình thường, RAM cache sẽ tự giải phóng khi ứng dụng cần. Bạn nên xem cột available thay vì free để biết RAM thật sự khả dụng.
Tắt ZRAM trên VPS có ảnh hưởng gì không?
Nếu bạn đã đủ RAM vật lý và không dùng swap file truyền thống, tắt ZRAM không sao, nhưng khi thiếu RAM đột ngột, kernel sẽ không có vùng nén để xử lý, dễ kích hoạt OOM killer giết tiến trình. Trên VPS 1-2GB, nên giữ ZRAM kích hoạt.
Giảm RAM có làm giảm hiệu năng MySQL hoặc PHP-FPM không?
Có thể, nếu bạn giảm các buffer dành riêng như innodb_buffer_pool_size xuống quá thấp. Cách giảm RAM an toàn là tắt service nền không dùng, không cắt giảm cấu hình của ứng dụng đang phục vụ chính. Xem thêm tối ưu MariaDB trên VPS 2GB.
Ubuntu 26.04 LTS có gì mới trong việc quản lý RAM?
Ubuntu 26.04 LTS phát hành tháng 4/2026 vẫn dùng systemd với kernel mới hơn, cải thiện hiệu quả ZRAM và quản lý memory cgroup v2. Các bước trong bài viết áp dụng tương tự trên cả 24.04 và 26.04.
Bài viết liên quan
- Cấu hình swap hợp lý cho VPS RAM thấp
- Vì sao VPS bị đầy RAM và cách xử lý
- Chọn distro Linux tối ưu cho VPS
- Cách kiểm tra tài nguyên VPS đang dùng
Sau khi tối ưu xong, nếu VPS vẫn thiếu RAM cho khối lượng công việc thực tế, cân nhắc nâng cấp gói VPS với nhiều RAM hơn thay vì ép hệ thống hoạt động ở mức sát ngưỡng. Một máy chủ ổn định với dư khoảng 20-30% RAM sẽ bền hơn nhiều so với máy luôn ở mức 95%. Giảm tiêu thụ RAM là việc nên làm một lần khi mới cài đặt, còn về lâu dài hãy theo dõi và nâng cấp đúng thời điểm.


