VPS 2GB RAM chạy được những gì: giới hạn thật và cách vắt kiệt

Bạn vừa mua một VPS 2GB RAM, nhưng lại băn khoăn không biết nó thực sự chạy được những gì, hay nhanh chóng rơi vào tình trạng quá tải, lag, chậm. Đây là câu chuyện rất thực tế: 2GB không phải là con số quá nhỏ, nhưng cũng không phải là "vô hạn". Bài viết này sẽ vạch ra giới hạn thật của một VPS 2GB RAM, chỉ cho bạn cách "vắt kiệt" từng MB tài nguyên, và quan trọng nhất là xác định khi nào bạn buộc phải nâng cấp lên 4GB. Tất cả các con số và cấu hình đều dựa trên trải nghiệm thực tế, không lý thuyết suông.
Tóm tắt nhanh những gì VPS 2GB RAM có thể làm
- WordPress nhỏ: Chạy được 1 site WordPress tối ưu (gọn nhẹ, không page builder) với khoảng 10-20 nghìn visit/tháng. RAM dành cho PHP-FPM khoảng 300-400 MB, MySQL/MariaDB khoảng 200-300 MB.
- n8n vài workflow: Chạy được khoảng 5-10 workflow đơn giản, không quá nhiều webhook hoặc xử lý dữ liệu lớn. Node.js n8n ngốn tầm 200-300 MB.
- API Node/PHP: Hoàn toàn đủ cho một API backend nhỏ (ví dụ: REST API cho ứng dụng di động) với vài trăm request/phút.
- Redis nhỏ: Làm cache cho ứng dụng, dùng tối đa 100-200 MB RAM cho cache session và query database. OK.
Yêu cầu trước khi bắt đầu
- Một VPS chạy Linux (Ubuntu 24.04 LTS hoặc Debian 12) với 2 GB RAM, 1-2 vCPU, ổ NVMe.
- Quyền truy cập root hoặc user sudo.
- Kiến thức cơ bản về dòng lệnh Linux: SSH, systemctl, nano/vim.
- Hiểu biết sơ qua về web server (Nginx hoặc Apache) và PHP/Node.js nếu bạn muốn chạy ứng dụng cụ thể.
Vì sao VPS 2GB RAM lại "kén" ứng dụng?
2GB RAM là ngưỡng ranh giới. Nó đủ cho một stack LEMP hoặc LAMP nhẹ nhàng, nhưng không đủ cho nhiều ứng dụng "nặng" cùng lúc. Vấn đề chính không phải là CPU, mà là RAM: khi hết RAM, hệ thống sẽ sử dụng swap (ổ cứng), làm mọi thứ chậm đi trông thấy. Các ứng dụng hiện đại như WordPress với nhiều plugin, Python nặng, hoặc database lớn sẽ nhanh chóng đẩy bạn vào tình trạng OOM (Out Of Memory) và bị kernel giết process.
Bước 1 - Cấu hình swap ngay từ đầu
Trước khi chạy bất kỳ ứng dụng nào, hãy cấu hình swap. Swap cho phép VPS sử dụng một phần ổ cứng NVMe làm RAM ảo. Mặc dù chậm hơn RAM thật, nhưng nó giúp hệ thống không bị crash khi RAM đầy. Với VPS 2GB, tôi khuyên bạn nên tạo swap file 2GB hoặc 4GB (nếu ổ cứng dư).
# Tạo swap file 4GB (điều chỉnh số block = 4 * 1024 = 4096)
sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# Cấu hình tự động bật swap khi khởi động
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# Kiểm tra swap đã được bật
sudo swapon --show
# Output mong đợi: /swapfile file 4G 0B -1
Điều chỉnh giá trị `vm.swappiness` để kiểm soát khi nào hệ thống dùng swap. Giá trị mặc định 60 là ổn, nhưng với VPS 2GB, tôi hạ xuống 10 để ưu tiên dùng RAM thật hết mức trước khi swap.
# Giảm swappiness xuống 10
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-swap.conf
sudo sysctl -p /etc/sysctl.d/99-swap.conf
Bước 2 - Chạy WordPress nhỏ: tối ưu từ PHP đến MySQL
WordPress là ứng dụng phổ biến nhất trên VPS, nhưng nó có thể rất "ngốn" RAM nếu không được tối ưu. Với VPS 2GB, bạn chỉ nên chạy 1 site WordPress với các plugin nhẹ, không dùng page builder nặng (Elementor, Divi). Hãy cài đặt Nginx + PHP-FPM + MariaDB.
# Cài đặt LEMP stack (Nginx, PHP 8.3, MariaDB)
sudo apt update
sudo apt install nginx php8.3-fpm php8.3-mysql php8.3-cli php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip mariadb-server -y
Giới hạn worker PHP-FPM: Đây là bước quan trọng. Mỗi process PHP-FPM ngốn khoảng 30-50 MB RAM. Đừng dùng `ondemand` hay `dynamic` mặc định, hãy dùng chế độ `static` với số lượng worker tối đa phù hợp.
# Cấu hình PHP-FPM cho VPS 2GB
sudo nano /etc/php/8.3/fpm/pool.d/www.conf
# Tìm và sửa các dòng:
pm = static
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
# Khởi động lại PHP-FPM
sudo systemctl restart php8.3-fpm
Tối ưu MariaDB: MariaDB có thể ngốn rất nhiều RAM nếu không cấu hình. Tạo file cấu hình nhỏ cho VPS 2GB.
# Cấu hình MariaDB cho VPS 2GB
sudo nano /etc/mysql/mariadb.conf.d/99-vps-2gb.cnf
# Thêm nội dung:
[mysqld]
innodb_buffer_pool_size = 256M
key_buffer_size = 16M
query_cache_type = 0
query_cache_size = 0
sort_buffer_size = 2M
read_buffer_size = 1M
# Tắt tính năng không cần thiết
performance_schema = OFF
# Giới hạn số kết nối
max_connections = 20
# Khởi động lại MariaDB
sudo systemctl restart mariadb
Verify: Kiểm tra RAM đang dùng.
# Kiểm tra RAM
free -h
# Output mong đợi: khoảng 400-500 MB cho MySQL + PHP-FPM + Nginx
# Kiểm tra PHP-FPM process
ps aux --sort=-%mem | grep php-fpm | head -5
Với cấu hình này, 1 site WordPress nhỏ có thể chạy ổn định với khoảng 10-20 nghìn lượt truy cập/tháng. Nếu cần băng thông trong nước tốc độ 100 Mbps, hãy chọn VPS Linux có IPv4 Việt Nam.
Bước 3 - Chạy n8n vài workflow
n8n chạy trên Node.js, nên nó ngốn RAM không quá nhiều nếu bạn kiểm soát được số workflow. Với VPS 2GB, bạn có thể chạy khoảng 5-10 workflow đơn giản (gọi API, gửi email, cập nhật Google Sheet). Tuy nhiên, nếu workflow có xử lý dữ liệu lớn (hàng trăm bản ghi) hoặc lặp webhook ồ ạt, bạn sẽ nhanh chóng hết RAM.
# Cài đặt n8n bằng Docker (khuyên dùng)
docker run -d --name n8n \
--restart=always \
-p 5678:5678 \
-e N8N_METRICS=false \
-e N8N_PAYLOAD_SIZE_MAX=1 \
-e WEBHOOK_URL=https://yourdomain.com \
-v n8n_data:/home/node/.n8n \
n8nio/n8n
Giới hạn workflow: Trong giao diện n8n, hãy tắt các workflow không dùng, và đặt chúng chạy theo lịch (cron) thay vì webhook nếu có thể. Mỗi workflow webhook luôn chạy một tiến trình Node.js, tốn thêm RAM. VPS 2GB thường chạy được 2-3 workflow webhook cùng lúc một cách mượt mà, hơn nữa sẽ bắt đầu xuất hiện lỗi timeout hoặc OOM.
Verify: Kiểm tra Docker.
docker stats n8n --no-stream
# Output mong đợi: RAM usage khoảng 200-350 MB
Bước 4 - Chạy API Node/PHP nhỏ và Redis cache
Một API backend Node.js (ví dụ Express/Fastify) hoặc PHP (Laravel/Slim) với vài endpoint là hoàn toàn khả thi trên VPS 2GB. Bạn có thể chạy thêm Redis làm cache session hoặc cache database query. Redis rất nhẹ, nhưng nếu không cấu hình giới hạn, nó có thể nhanh chóng chiếm hết RAM. Cấu hình file `redis.conf`:
# Cấu hình Redis cho VPS 2GB
sudo nano /etc/redis/redis.conf
# Giới hạn tối đa 256 MB cho Redis
maxmemory 256mb
maxmemory-policy allkeys-lru
# Tắt AOF (append-only file) nếu không cần persistence
appendonly no
# Khởi động lại Redis
sudo systemctl restart redis-server
API Node: Sử dụng PM2 để quản lý process, và giới hạn max memory mỗi process Node.
# Cài đặt PM2
npm install pm2 -g
# Giới hạn RAM cho process Node.js (ví dụ file app.js)
pm2 start app.js --max-memory-restart 512M
pm2 save
pm2 startup
Verify: Kiểm tra PM2.
pm2 monit
# Kiểm tra RAM usage của process
Khi nào VPS 2GB RAM không đủ và buộc phải lên 4GB?
Đây là những dấu hiệu rõ ràng bạn cần nâng cấp:
- WordPress có plugin nặng: Nếu bạn cài Elementor, WooCommerce, hoặc các plugin đa năng, RAM sẽ tăng vọt. Chỉ page builder Elementor ngốn 100-200 MB cho mỗi request.
- Chạy nhiều ứng dụng cùng lúc: Ví dụ: vừa chạy WordPress, vừa chạy n8n, vừa chạy API Node, và Redis. Lúc này 2GB là quá ít.
- Database hoặc cache lớn: Nếu bạn có database trên 500MB hoặc Redis cache hơn 300MB, hệ thống sẽ không đủ RAM để hoạt động ổn định.
- Traffic nhiều: Khi WordPress có hơn 50-60 nghìn view/tháng, hoặc API có hơn 1000 request/phút, PHP-FPM và MySQL cần nhiều RAM hơn.
- Chạy ứng dụng Java hoặc Python nặng: Java (ví dụ Spring Boot) hay Python (Django với ORM nặng) rất ngốn RAM.
Nếu bạn thấy hệ thống thường xuyên báo "Out of memory" hoặc process bị kill, hãy nâng cấp lên gói VPS 4GB. Ví dụ, các gói VPS NVMe của thueVPS có tùy chọn từ VNx2 (2 GB) lên VNx4 (4 GB), và giá theo tháng rất cạnh tranh, bạn có thể xem bảng giá để chọn gói phù hợp.
Câu hỏi thường gặp
VPS 2GB RAM chạy được Docker không?
Có, nhưng hãy cẩn thận. Docker base image nhẹ (Alpine) và mỗi container nên được giới hạn RAM bằng flag `--memory=512m`. Chạy 2-3 container nhẹ (Nginx + PHP + MySQL) là ổn, nhưng nếu chạy full-stack với nhiều service, bạn sẽ hết RAM.
Nên dùng swap file hay swap partition cho VPS 2GB?
Swap file là đủ và dễ cấu hình. Với ổ NVMe, tốc độ swap không quá chậm. Tránh dùng swap trên ổ HDD. Dung lượng swap nên bằng hoặc gấp đôi RAM (2-4 GB). Nếu bạn có ít dung lượng ổ, 2GB swap là chấp nhận được.
Có thể chạy cả WordPress và n8n trên cùng VPS 2GB không?
Có thể, nhưng khó. Bạn phải tối ưu rất gắt: giới hạn worker PHP-FPM xuống 2-3, giới hạn n8n chỉ 2-3 workflow webhook, và Redis dùng cache tối thiểu. Nếu workload tăng, hãy nâng cấp lên 4 GB.
VPS 2GB RAM có chạy được Node.js production không?
Được, nếu ứng dụng của bạn nhẹ. Dùng PM2 với giới hạn RAM 512 MB cho mỗi process. Với framework như Fastify hoặc Express, một process có thể xử lý vài trăm request/phút. Nếu dùng Next.js hoặc Nuxt.js ở chế độ SSR, RAM sẽ tăng nhanh.
Làm sao biết VPS 2GB đã cần nâng cấp?
Dùng lệnh `free -h`, `htop`, hoặc `dmesg | grep -i "oom\|killed"`. Nếu swap được dùng nhiều (hơn 500 MB), hoặc kernel kill process liên tục, đó là dấu hiệu bạn cần thêm RAM.
VPS 2GB có chạy được GitLab không?
Không nên. GitLab yêu cầu tối thiểu 4GB RAM để chạy ổn định. 2GB là quá ít, sẽ dẫn đến crash liên tục. Nếu cần GitLab, hãy dùng VPS 4GB hoặc dịch vụ GitLab chuyên dụng.
Bài viết liên quan
- So sánh hiệu năng VPS Linux và Windows: khi nào dùng OS nào
- Cấu hình swap và tối ưu bộ nhớ cho VPS RAM thấp
- Bảng giá thuê VPS giá rẻ cập nhật 2026


