VPS CPU cao cho compile và build: đo Node, Go, Rust

Chia sẻ bài viết

Mục lục
VPS CPU cao cho compile và build: đo Node, Go, Rust

Trả lời nhanh: Build không phải một loại tải mà là chuỗi pha trộn: cài dependency (nghẽn ổ đĩa), dịch/bundle (Next.js webpack, nặng đơn luồng; Go/Rust, chia nhiều nhân tốt), link và nén (lại đơn luồng). Nên máy build lý tưởng cần cả ba: xung cao cho các khâu tuần tự, 4-8 nhân cho khâu song song, NVMe cho khâu vạn-file. Điểm ngọt thực dụng: 6 vCPU xung cao + 8 GB + NVMe, trên đó Next.js tầm trung build ~40-90 giây, đủ nhanh để CI không thành hàng đợi than phiền.

"Build chậm thì thêm nhân" là phản xạ sai một nửa: đổ 16 nhân vào một pipeline mà khâu nghẽn là đơn luồng hay ổ đĩa thì tiền đi mà chờ vẫn chờ. Bài này giải phẫu một lần build thành các pha, chỉ ra mỗi pha đói tài nguyên gì, kèm số đo tham chiếu ba hệ ngôn ngữ, để bạn chọn máy build bằng hiểu biết thay vì bằng đoán.

Tóm tắt nhanh
  • Pha cài đặt: I/O vạn-file, NVMe ăn điểm (bài npm chậm là chương riêng)
  • Pha dịch: Next/webpack nghiêng đơn luồng; Go/Rust/SWC song song tốt, biết stack để cân nhân
  • Pha link/nén/minify: quay về đơn luồng, xung cao lại lên tiếng
  • Công thức máy build: 6 vCPU xung cao + 8 GB + NVMe; CI chạy dày → runner tự host trên cấu hình này

Giải phẫu một lần build thành các pha

Chạy time npm run build và quan sát htop qua các giai đoạn, bạn thấy ba chân dung tài nguyên nối nhau: (1) Cài/khôi phục dependency, đĩa cày, CPU nhàn: thuần I/O vạn-file. (2) Dịch + bundle, tùy công cụ: webpack/terser truyền thống một nhân đỏ rực bảy nhân ngáp; SWC/esbuild/Turbopack và compiler Go/Rust ăn đều các nhân. (3) Tối ưu cuối (minify, nén, sourcemap, link), thường co về ít luồng. Nhìn được pha nghẽn của chính dự án mình là một nửa lời giải, nửa còn lại là cấp đúng món cho pha đó.

Số tham chiếu ba hệ - cùng máy 6 vCPU xung cao + NVMe

  • Next.js tầm trung (~200 trang/component): npm ci 25-40s + next build 40-90s. Nhân thứ 7-8 thêm vào giúp không đáng kể (webpack đơn luồng dài); đổi máy xung thấp → build dài gấp rưỡi-đôi dù nhân bằng nhau.
  • Go service tầm trung: build sạch 15-45s, chia nhân rất tốt, cache module xuất sắc: build lặp còn vài giây. Go là hệ 'thêm nhân là thấy'.
  • Rust dự án vừa: build sạch 2-6 phút (nổi tiếng), chia nhân tốt ở pha dịch nhưng pha link cuối đơn luồng dài, hưởng cả nhân lẫn xung; incremental sau đó xuống giây. Rust còn nhạy RAM: 8 GB là sàn thoải mái.

Con số dao động theo dự án, giá trị nằm ở hình dạng: hệ nào đáng thêm nhân, hệ nào đáng thêm xung, và mọi hệ đều đáng NVMe ở pha 1.

Máy build riêng hay build tại chỗ - bài toán tổ chức

Ba mô hình theo quy mô: (a) build ngay trên VPS chạy app, ổn cho dự án nhỏ deploy thưa (chú ý RAM lúc build đè lên app đang chạy, swap là lưới); (b) build trên CI mượn (GitHub Actions), sạch sẽ nhưng máy chung chậm và cache lạnh (bài CI/CD + Docker-build đã kê thuốc); (c) runner tự host trên VPS cấu hình bài này, điểm ngọt của đội deploy dày: cache sống giữa các build, NVMe + xung cao cắt thời gian còn một phần nhỏ, một máy phục vụ nhiều repo. Bài 18073 tính riêng bài toán này, kết luận ngắn: từ ~10 build/ngày trở lên, runner tự host tự trả tiền thuê máy bằng thời gian đội ngũ.

Checklist chốt máy build

  1. Đo dự án thật: time từng pha (cài / build / test), biết pha nghẽn trước khi mua.
  2. Stack webpack/Next cũ → ưu tiên xung; Go/Rust/monorepo song song → cân thêm nhân; mọi trường hợp → NVMe không thương lượng.
  3. RAM: 8 GB sàn cho build hiện đại (Next + TS + Rust đều đói); thiếu RAM lúc build = OOM giữa chừng (bài swap kể triệu chứng).
  4. CI dày → tách runner tự host; nhớ giữ cache (npm, .next, cargo, Docker layer) giữa các lần, cache trên NVMe là nửa phép màu.
  5. Nghiệm thu: chạy 3 build liên tiếp, lần 2-3 phải nhanh hơn hẳn lần 1 (cache sống); không nhanh hơn là cấu hình cache chưa ăn.

Đo trên chính dự án của bạn

# Do tong thoi gian dung, chay 3 lan lay trung vi
for i in 1 2 3; do /usr/bin/time -f "%e giay" npm run build; done

# Do dinh diem bo nho, con so quyet dinh cau hinh may
/usr/bin/time -v npm run build 2>&1 | grep "Maximum resident"

# Trong luc dung, xem nghen o dau
vmstat 2 60    # us cao la vi xu ly; wa cao la cho o dia
iostat -x 2 30 # %util gan 100 la nghen o dia

# Dem so tep phai doc, con so quyet dinh tai o dia
find . -type f -not -path "*/.git/*" | wc -l
Kết quả đoNghẽn ở đâuNâng cấp gì
Vi xử lý gần 100%, chờ ổ đĩa thấpVi xử lýXung nhịp cao, rồi mới tới số nhân
Chờ ổ đĩa cao, vi xử lý thấpỔ đĩaỔ NVMe, và giữ bộ nhớ đệm giữa các lần dựng
Bộ nhớ đầy, có tráo trangBộ nhớThêm RAM, đây là ưu tiên số một
Tiến trình bị dừng giữa chừngHết bộ nhớThêm RAM hoặc đặt vùng nhớ tạm

Máy dựng riêng hay dựng tại chỗ

  • Một người, một dự án: dựng ngay trên máy phát triển là đủ, không cần máy riêng.
  • Đội 3 người trở lên: một máy dựng chung tiết kiệm hơn nhiều so với mỗi người một máy mạnh, và cho môi trường giống nhau.
  • Máy dựng không nên là máy đang phục vụ khách. Bước dựng ăn hết tài nguyên và làm trang chậm hẳn trong lúc đó.
  • Máy dựng cần ổ lớn hơn bạn nghĩ: bộ nhớ đệm thư viện và kết quả dựng tích tụ rất nhanh. Đặt tác vụ dọn định kỳ ngay từ đầu.

Danh sách kiểm khi chốt máy dựng

  • Xung nhịp một luồng cao, vì nhiều bước trong quá trình dựng chạy tuần tự.
  • Bộ nhớ đủ cho đỉnh điểm, đo bằng lệnh ở trên rồi cộng thêm 50%.
  • Ổ NVMe, vì dựng là thao tác đọc ghi hàng chục nghìn tệp nhỏ.
  • Vùng nhớ tạm để không bị dừng tiến trình đột ngột.
  • Cảnh báo khi ổ còn dưới 20%.

Chi tiết về xung nhịp và cách đọc thông số nằm ở bài về xung nhịp một luồng.

Câu hỏi thường gặp

Build trên VPS có nhanh hơn laptop dev không?

Thường có với laptop phổ thông: NVMe server + xung ổn định + không nhiệt throttle + mạng datacenter kéo dependency nhanh. Laptop workstation xịn có thể ngang ngửa, nhưng runner tự host thắng ở chỗ không chiếm máy bạn đang gõ code.

Turbopack/Vite có làm bài toán này lỗi thời không?

Chúng chuyển pha dịch sang song song + tăng tốc lớn, cán cân nhân/xung cân bằng hơn. Nhưng pha cài vạn-file và pha nén cuối vẫn đó: NVMe và xung cao chưa mất việc, chỉ bớt độc diễn.

Agent AI build liên tục thì tính máy thế nào?

Cộng dồn như CI dày: mỗi vòng agent là một chu build-test. Cấu hình bài này + worktree song song (bài git worktree) là đúng 'xưởng', và giải thích vì sao cụm vibe-code cứ nhắc mãi NVMe + xung cao.

Có nên build bằng Docker cho sạch không?

Nên khi cần đồng nhất môi trường, với điều kiện áp đủ bài Docker-build-chậm (cache mount, thứ tự layer). Docker không cache là tự trả giá 'lần đầu' mỗi build, lỗi phổ biến nhất của CI hóa nửa vời.

Hạ tầng NVMe Enterprise của TND
VPS ổ Enterprise U.2 NVMe, CPU xung cao, đặt tại Việt Nam
Công thức máy build của bài có sẵn trên kệ TND: gói VPS NVMe 6-8 vCPU Xeon Platinum xung cao + 8 GB + Enterprise U.2 NVMe RAID 10, npm ci vài chục giây, cache sống giữa các build, runner tự host cắm là chạy. Đội deploy dày hay xưởng agent: đây là chiếc máy tự trả tiền thuê bằng thời gian chờ tiết kiệm được. Bàn giao 5 phút.
Dùng thử VPS NVMe, bàn giao trong 5 phút

Bài viết liên quan