Next.js 15 chạy trên VPS: cấu hình cho từng quy mô dự án

Chia sẻ bài viết

Mục lục
Next.js 15 chạy trên VPS: cấu hình cho từng quy mô dự án

Trả lời nhanh: Cần phân biệt hai giai đoạn. Lúc build tiêu tốn nhiều RAM và CPU, dự án nhiều trang tĩnh có thể cần 4 tới 8GB RAM chỉ để build xong. Lúc chạy thì nhẹ hơn nhiều, một ứng dụng vừa chạy tốt với 2GB. Vì vậy cấu hình phải chọn theo lúc build, hoặc tách máy build riêng. Ổ NVMe giúp nhiều nhất ở khâu cài thư viện và ghi kết quả build, hai khâu đọc ghi hàng chục nghìn file nhỏ.

Ứng dụng chạy êm với 2GB RAM, nhưng mỗi lần build là máy đơ rồi tiến trình bị tắt. Đó là vì bạn chọn cấu hình theo lúc chạy chứ không theo lúc build.

Tóm tắt nhanh
  • Lúc build ngốn tài nguyên gấp nhiều lần lúc chạy.
  • Chọn cấu hình theo lúc build, hoặc tách máy build riêng.
  • Nhiều trang tĩnh nghĩa là build lâu và tốn RAM hơn.
  • Ổ NVMe rút ngắn rõ nhất ở khâu cài thư viện và ghi kết quả build.

Hai giai đoạn, hai nhu cầu khác nhau

Giai đoạnRAMCPUỔ đĩa
Cài thư việnvừathấprất nặng
Buildrất nặngnặngnặng
Chạy phục vụ kháchnhẹ tới vừavừanhẹ

Chính vì lệch pha này mà nhiều người chọn sai. Cách xử lý gọn nhất: build ở nơi khác rồi chỉ đưa kết quả lên máy chạy thật.

Cấu hình gợi ý

Quy môRAMNhânỔ
Landing, blog dưới 100 trang2 tới 4GB2NVMe 40GB
Ứng dụng vừa, vài trăm trang4 tới 8GB2 tới 4NVMe 80GB
Nhiều nghìn trang tĩnh8 tới 16GB4 trở lênNVMe 80GB trở lên

Khi build bị tắt giữa chừng

Triệu chứng: build chạy được một lúc rồi dừng, thông báo lỗi không rõ ràng hoặc bị kết thúc đột ngột. Kiểm tra:

dmesg | grep -i "killed process"

Thấy dòng nào nghĩa là hệ thống đã tắt tiến trình vì hết RAM. Ba cách xử lý theo thứ tự ưu tiên: tăng RAM, bật swap làm đệm, hoặc giảm số tiến trình build chạy song song.

Giảm thời gian build

  1. Giữ bộ nhớ đệm build giữa các lần chạy, đây là thứ hiệu quả nhất.
  2. Chỉ cài thư viện cần cho môi trường chạy thật.
  3. Cân nhắc dựng trang theo yêu cầu thay vì dựng sẵn toàn bộ khi số trang quá lớn.
  4. Đặt thư mục làm việc trên ổ nhanh nhất.
  5. Dọn kho bộ nhớ đệm định kỳ, phình to thì chính nó làm chậm.

Cấu hình theo quy mô, và vì sao dựng khác chạy

Quy mô dự ánBộ nhớ cần khi dựngBộ nhớ cần khi chạyGhi chú
Trang giới thiệu, dưới 20 trang2 GB512 MBDựng là phần nặng hơn hẳn
Trang tin, 100 tới 500 trang4 GB1 GBDựng trước toàn bộ trang tốn bộ nhớ
Thương mại điện tử, hàng nghìn trang8 GB2 GBCân nhắc dựng dần thay vì dựng hết
Ứng dụng lớn, nhiều thư viện8 tới 16 GB2 GBDựng ở nơi khác rồi đẩy kết quả sang

Điểm mấu chốt: bước dựng cần nhiều bộ nhớ hơn bước chạy vài lần. Đây là lý do rất nhiều người thuê máy vừa đủ để chạy rồi phát hiện không dựng nổi.

Khi bước dựng bị tắt giữa chừng

# 1. Xac nhan dung la het bo nho
dmesg | tail -30 | grep -i "out of memory\|killed process"

# 2. Cach nhanh nhat: them vung nho tam
fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab

# 3. Gioi han bo nho cho tien trinh dung
export NODE_OPTIONS="--max-old-space-size=3072"

# 4. Theo doi trong luc dung
watch -n2 'free -h'

# 5. Cach ben hon: dung o may khac roi day ket qua sang
#    May chay chi can du de phuc vu, khong can du de dung

Giảm thời gian dựng

  • Giữ lại bộ nhớ đệm giữa các lần dựng. Đây là thay đổi cho hiệu quả lớn nhất và thường bị bỏ qua khi dựng trong container.
  • Chỉ dựng lại phần thay đổi thay vì dựng lại toàn bộ, với dự án có nhiều trang tĩnh.
  • Ổ NVMe tạo khác biệt rõ ở bước này, vì dựng là thao tác đọc ghi hàng chục nghìn tệp nhỏ.
  • Bỏ bớt thư viện không dùng. Rà lại danh sách phụ thuộc mỗi vài tháng, thường có thứ để bỏ.
  • Đừng dựng trên máy đang phục vụ khách nếu máy nhỏ: bước dựng ăn hết tài nguyên và làm trang chậm hẳn trong lúc đó.

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

Next.js cần bao nhiêu RAM để build?

Dự án vừa khoảng 4GB, dự án nhiều nghìn trang tĩnh có thể cần 8GB trở lên. Lúc chạy thì nhẹ hơn nhiều.

Vì sao build bị tắt giữa chừng?

Gần như luôn là hết RAM. Kiểm tra bằng lệnh dmesg tìm dòng killed process, rồi tăng RAM hoặc bật swap.

Có nên build trên máy chạy thật không?

Không nên nếu máy đang phục vụ khách, vì build ngốn tài nguyên và làm chậm website. Tách máy build riêng hoặc build vào giờ vắng.

Ổ NVMe rút ngắn build bao nhiêu?

Rõ nhất ở khâu cài thư viện và ghi kết quả, hai khâu xử lý hàng chục nghìn file nhỏ. Phần biên dịch phụ thuộc CPU nên ít đổi.

Hạ tầng NVMe Enterprise của TND
VPS ổ Enterprise U.2 NVMe, CPU xung cao, đặt tại Việt Nam
Truy vấn SQL, PHP dựng trang, build Next.js hay đóng gói app iOS và Android: phần lớn các bước này chạy đơn luồng và đập liên tục vào ổ đĩa. Nghẽn nằm ở tốc độ đọc ghi và xung nhịp CPU, không phải ở việc có thật nhiều nhân. Ổ Enterprise U.2 NVMe chuẩn máy chủ chạy RAID 10 cho IOPS đọc ghi ngẫu nhiên gấp 5 đến 7 lần ổ SATA SSD, khác hẳn NVMe M.2 phổ thông. Chạy trên chip Intel Xeon Platinum dòng xung cao, backup tự động hàng tuần, bàn giao trong 5 phút.
Xem VPS Enterprise U.2 NVMe RAID 10, CPU xung cao

Bài viết liên quan